Kritische Lücke im Linux-Kernel betrifft alle Versionen seit 2001
Zusammenfassung
Tavis Ormandy und Julien Tinnes von Google fanden 2009 eine Lücke, die alle Linux-Kernel 2.4 und 2.6 seit Mai 2001 betraf und lokale Root-Rechte ermöglichte. Bei selten genutzten Protokollen wie Bluetooth, PPPoX oder ISDN blieben Zeiger in den Socket-Operationen uninitialisiert, was sich über sock_sendpage ausnutzen ließ. Brad Spengler veröffentlichte den Exploit „wunderbar_emporium“, der auf einem aktuellen Ubuntu 8.10 funktionierte.
Ideen
- Nicht implementierte Socket-Operationen hätten auf sichere Standardfunktionen zeigen müssen.
- Eine Null-Pointer-Dereferenzierung im Kernel ließ sich zur Rechteausweitung nutzen.
- Die Kernel-Entwickler korrigierten die gemeinsame Funktion statt jedes Protokoll einzeln.
- Eine Einstellung für mmap_min_addr größer null verhinderte den Exploit.
Einsichten
- Selten genutzter Code altert unbemerkt und bleibt jahrelang verwundbar.
- Schutzmechanismen, die ganze Fehlerklassen abfangen, wirken auch gegen unbekannte Lücken.
Fakten
- Betroffen waren 2.4.4 bis 2.4.37.4 und 2.6.0 bis 2.6.30.4.
- Die Lücke ist als CVE-2009-2692 bekannt.
Referenzen
Kritik
- Die Meldung erklärt die Ursache gut, sagt aber nicht, welche Distributionen mmap_min_addr bereits standardmäßig setzten.
Bemerkungen
- Moderne Kernel verbieten Zuordnungen auf Adresse null standardmäßig, sodass Null-Pointer-Fehler meist nur noch Abstürze auslösen.
Empfehlungen
- Prüfe mit sysctl vm.mmap_min_addr, dass der Wert größer null ist.
- Blockiere Kernel-Module für Protokolle wie Bluetooth, PPPoX oder ISDN auf Servern, die sie nicht brauchen.
Links zur Originalquelle und zum Webarchiv öffnen einen neuen Tab.