Stabsstelle Informationssicherheit der
Universität Stuttgart (RUS-CERT)
https://cert.uni-stuttgart.de
logo
Meldung Nr: RUS-CERT-1006

[Generic/TCP] Umgehung von Paketfiltern
(2002-10-24 14:51:25.041882+00)

Quelle: http://cert.uni-stuttgart.de/archive/bugtraq/2002/10/msg00275.html

Linux- und Cisco-IOS-Router (und möglicherweise weitere Netzkomponenten) können wegen einer liberalen Handhabung der TCP-Verbindungsflags in bestimmten Konfigurationen den Verbindungsaufbau zu Hosts mit einem TCP-Implementierungsfehler (z.B. Linux) nicht verhindern. (Diese Nachricht wird erneut veröffentlicht, da die erste Fassung fehlerhafterweise die Existenz des Linux-Linux-Problems leugnete.)

Betroffene Systeme

Nicht betroffene Systeme
Nach gegenwärtigem Kenntnisstand funktionieren die Filter bei folgenden Kombinationen wie erwartet:

Einfallstor
TCP-Pakete mit manipulierten TCP-Flags

Auswirkung
Der Paketfilter auf dem Router wird umgangen.

Typ der Verwundbarkeit
Unstimmigkeiten bei der Implementierung des TCP-Protokolls

Gefahrenpotential
Das Gefahrenpotential hängt von der Router/Host-Kombination und der Existenz weiterer Paketfilter ab, kann aber als sehr hoch einzustufen sein.
(Hinweise zur Einstufung des Gefahrenpotentials.)

Beschreibung
Laut RFC 793 tragen TCP-Pakete Flags, die im Laufe einer Verbindung unterschiedliche Werte annehmen. Im ersten Paket, das der Client zum Server zur Einleitung der Verbindung schickt, ist i.d.R. nur das SYN-Flag gesetzt (siehe unten). Von da an tragen alle Pakete in dieser Verbindung ein ACK- oder RST-Flag. Es gibt daher mehrere Möglichkeiten, Pakete, die einen Verbindungsbeginn kennzeichnen zu erkennen. Die üblichen Ansätze sind: sind:

  1. nur das SYN-Flag ist gesetzt
  2. weder das ACK-Flag noch das RST-Flag ist gesetzt (Cisco IOS)
  3. das SYN-Flag ist gesetzt, jedoch nicht eines der ACK- oder RST-Flags (Linux 2.2, Linux 2.4 mit der --syn-Option von iptables)

Von diesen Möglichkeiten erscheint die erste zunächst die zuverlässigste, allerdings kann im Rahmen des TCP-Protokolls auch eine Verbindung mit einer Kombination SYN plus FIN aufgebaut werden. Die BSD-Sockets-Programmierschnittstelle für TCP/IP, die in irgendeiner Form auf nahezu allen heute gebräuchlichen Systemen verwendet wird, sieht keine Möglichkeit vor, den TCP/IP-Stack anzuweisen, in dieser Weise eine Verbindung aufzubauen. Deswegen kommen SYN-FIN-Pakete während des Verbindungsaufbaus in der Praxis nicht vor. Trotzdem bedeutet dies, daß nur die zweite und die dritte Möglichkeit korrekt im eigentlichen Sinne sind.

Auf der Host-Seite unterscheiden sich die Systeme deutlich in der Behandlung von exotischen Flag-Kombinationen beim Verbindungsaufbau. Nach ersten Tests ergibt sich folgendes Bild:

Bei zustandslosen Filtern für TCP-Verbindungen wird, wie oben beschrieben, anhand der TCP-Flags ein Paket erkannt, das eine Verbindung einleitet. Bei den meisten Regelsätzen für solche Paketfilter findet sich eine Regel, die Pakete, die keine Verbindung starten, durchlassen, in der Annahme, daß sie zu einer bestehenden Verbindung gehören. (Bei IOS geschieht das mit einer Regel der Form "permit tcp any any established".) Falls Filter-Implementierung auf dem Router und TCP-Implementierung auf dem Host nicht dieselben Pakete als verbindungseinleitend erkennen, können entweder erwünschte Verbindungen verhindert oder unerwünschte zugelassen werden.

Insgesamt ergibt sich folgendes Bild für die Filtermöglichkeiten (wobei "BSD-Host" hier auch Solaris und Windows einschließt):

Linux-HostBSD-Host
Cisco-IOS-Routerneinja
Linux-Routerneinja

Hinweis: In der ersten Version dieser Nachricht wurde behauptet, dass Linux-Router für Linux-Hosts in der Voreinstellung (mit --syn) korrekt filtern könnten. Dies ist jedoch nicht korrekt, wir bitten diesen Fehler zu entschuldigen.

Gegenmaßnahmen

Der Ansatz von Cisco stellt zwar keinen IOS-Fehler da, ist aber in Situationen wie z.B. in einem typischen Universitätsnetz ärgerlich, wo an zentraler Stelle gefiltert wird, um den Zugriff auf potentiell ungepflegte Server zu verhindern und so das Risiko für Angriffe von außen deutlich zu senken.

Weitere Information zu diesem Thema

Revisionen dieser Meldung

(fw)

Hinweis
Die in diesem Text enthaltene Information wurde für die Mitglieder der Universität Stuttgart recherchiert und zusammengestellt. Die Universität Stuttgart übernimmt keinerlei Haftung für die Inhalte. Dieser Artikel darf ausschließlich in unveränderter Form und nur zusammen mit diesem Hinweis sowie dem folgenden Copyrightverweis veröffentlicht werden. Eine Veröffentlichung unter diesen Bedingungen an anderer Stelle ist ausdrücklich gestattet.

Copyright © 2022 RUS-CERT, Universität Stuttgart, https://cert.uni-stuttgart.de/


https://cert.uni-stuttgart.de/ticker/article.php?mid=1006