DHCP-Server kann Client übernehmen

Präparierte DHCP-Server können die Kontrolle über einen PC übernehmen, wenn darauf der DHCP-Client des Internet Systems Consortiums (ISC) (dhclient) läuft. Standardmäßig ist dies bei vielen Linux-Distributionen der Fall.

In Pocket speichern vorlesen Druckansicht 210 Kommentare lesen
Lesezeit: 2 Min.
Von
  • Daniel Bachfeld

Präparierte DHCP-Server können die Kontrolle über einen PC übernehmen, wenn darauf der DHCP-Client des Internet Systems Consortiums (ISC) (dhclient) läuft. Standardmäßig ist dies etwa bei Ubuntu, Red Hat und vielen anderen Linux-Distributionen der Fall. Einem Fehlerbericht des ISC zufolge beruht die Lücke auf einem Buffer Overflow, wodurch ein Angreifer seinen Code in ein System schleusen und mit Root-Rechten starten kann. Der Buffer Overflow tritt in der Funktion script_write_params bei der Übernahme zu langer, vom Server gesendeter Subnetzmasken auf.

Betroffen sind die Client-Server-Bundle DHCP 4.1, DHCP 4.0, DHCP 3.1, DHCP 3.0 und DHCP 2.0. Der Hersteller stellt die Updates 4.1.0p1, 4.0.1p1 und 3.1.2p1 zur Verfügung, die die Lücke schließen sollen. Die Linux-Distributoren verteilen bereits aktualisierte Pakete. Für DHCP 3.0 und DHCP 2.0 soll es keine Patches geben, da das ISC diese Version nicht mehr unterstützt.

Das ISC hält erfolgreiche Angriffe in geschlossenen Netzen jedoch für wenig wahrscheinlich. Ein Angreifer müsste einen eigenen DHCP-Server im Netz betreiben. Unerlaubte DHCP-Server haben allerdings viele Admins in ihren Netzen sicherlich schon beobachtet, wobei diese meist unbewußt ans Netz angeschlossen wurden. Mobile Anwender sind schon eher von Angriffen durch präparierte DHCP-Server bedroht, etwa in öffentlichen WLANs oder unkontrollierten LANs, etwa auf einer größeren LAN-Party.

Update: Nach Angaben von Marcus Meissner von Suse kommt die Lücke zumindest unter Red Hat und Suse nicht zum Tragen, da dort der Sourcecode mit der Option FORTIFY_SOURCE übersetzt wurde. Damit weiß der Compiler quasi, wie groß ein Puffer maximal sein darf. Auch die glibc "weiß" damit, wie groß ein Zielpuffer sein darf und begrenzt diesen bei der Nutzung unsicherer Funktionen wie strcpy(). Ist der Puffer doch größer, bricht das Programm ab.

Siehe dazu auch:

(dab)