bk99.de entertain the web since 1997

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.

Originalartikel lesen →

Im Webarchiv suchen