Login
Newsletter
Werbung

Do, 11. November 2004, 18:47

Software::Kernel

Kernel-Lücken

Der ELF-Lader im Linuxkernel enthält mehrere Fehler.

Entdeckt von Paul Starzetz, der unter anderem auch die mremap-Sicherheitslücke entdeckte, könnten sich mehrere der neuen Lücken ausnutzen lassen, um sich erweiterte Rechte zu erschleichen.

Bei zwei der Fehler liegt die Ursache bei der Ermittlung des Interpreters. Dies ist normalerweise der dynamische Linker ld.so, der benötigte Bibliotheken lädt und das Programm auf die Ausführung vorbereitet.

Der erste Fehler liegt bei der unzureichenden Prüfung des Erfolges des read-Aufrufes, der den Interpreter aus ELF-Dateien liest. Die Entwickler überprüfen den Rückgabewert zwar auf Fehlercodes, jedoch lassen sie außer Acht, dass read durchaus weniger Zeichen als angegeben einlesen kann und trotzdem einen Erfolgswert liefert, womit ein Teil des Datenpuffers uninitialisiert bleibt und eventuell noch sensible Daten aus der vorherigen Benutzung des Datenbereiches enthält. Dieser Fall, der überwiegend beim Lesen von Netzwerkverbindungen und anderen Sockets auftritt, könnte durch Attacken auch gezielt herbeigeführt werden.

Beim zweiten Fehler in diesem Bereich liegt das Problem darin, dass Name des in der ELF-Datei angegebenen Interpreters eventuell nicht mit einem Nullzeichen abschließt. Da das Nullzeichen das Ende eines C-Strings markiert, entsteht bei dessen Fehlen eine Zeichenkette zufälliger Länge, die in bestimmten Fällen über der maximalen Pfadlänge liegt. Experimente der Testgruppe führten bei der Ausführung speziell angefertigter ELF-Binarys zum Absturz des Systems.

Für einen weiteren Fehler hängt der Meldung ein passender Exploit an. Wenn in ELF-Dateien eine Datei als Interpreter angegeben ist, wird diese ohne Rücksicht auf das Leserecht gelesen, um sie zur Verarbeitung der ELF-Datei auszuführen. Das weitverbreitete Vorgehen, SUID-Binarys für die Benutzer ausführbar, aber nicht lesbar zu machen, um das Ausspähen von Angriffspunkten zu vermeiden, ist durch den Exploit gefährdet: das angegebene Programm kopiert nicht-lesbare ELF-Dateien und macht diese so lesbar, um einem Angreifer die Analyse des Codes zu ermöglichen. Die Lücke beschränkt sich auf das Auslesen von ELF-Binarys, daher funktioniert das Auslesen anderer Daten, wie Text, nicht.

Entdeckt wurde das Problem im Linux-Kernel 2.4.27. Vermutlich sind alle 2.4er Kernels einschließlich diesem von den Problemen betroffen. Weitere Schwierigkeiten bereiten die 2.6-Versionen, wobei die Fehler in der Kernelversion 2.6.9 behoben sind.

Werbung
Zum Thema
Kommentare (Insgesamt: 18 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung