Login
Newsletter
Werbung

Mo, 24. März 2003, 17:27

Software::Kernel

Details zum ptrace-Bug im Kernel

Der Kernel-Fehler im Zusammenhang mit ptrace, den Alan Cox bekannt gegeben und in Kernel 2.2.25 gleich behoben hat, ist in Kernel 2.4 immer noch akut.

Es gibt inzwischen einen »Exploit« des Problems, den man unter dem angegebenen Link findet. Ein Exploit ist ein Programm, das eine Sicherheitslücke ausnutzt, um seine Privilegien zu erweitern. Besagtes Programm ist lediglich ein Demo. Es ist 300 Zeilen lang und gibt, wenn es erfolgreich war, einen "Beweis" auf dem Terminal aus. Unseren Tests zufolge funktioniert es.

Das Problem selbst bietet normalen Benutzern die Möglichkeit, sich Root-Rechte zu verschaffen. Es tritt nur auf, wenn drei Voraussetzungen erfüllt sind:

  1. Der Kernel muß Modul-Unterstützung und den Kernel Modul-Lader eingebaut haben
  2. /proc/sys/kernel/modprobe enthält den Pfad zu einem (beliebigen) existierenden Programm
  3. ptrace-Aufrufe werden nicht blockiert

In den meisten Linux-Distributionen sind diese Bedingungen erfüllt. Dies bewog einige Kommentatoren dazu, den ersten wirklich gefährlichen Linux-Virus heraufziehen zu sehen. Dies dürfte übertrieben sein, denn die Sicherheitslücke ist nicht gravierender als jede Sicherheitslücke in einem setuid-Programm. Allerdings muß man zur Behebung einen neuen Kernel installieren, und noch haben nicht alle Distributoren ihre Kernel aktualisiert. Für alle, die ihren Kernel selbst compilieren, stehen aber Patches zur Verfügung.

Wie man aus der obigen Liste sieht, genügt es auch, Bedingung 2 unwirksam zu machen. In unseren Tests genügte es, die Zeile

echo '' > /proc/sys/kernel/modprobe

auszuführen. Dies verhindert alle Probleme bis zum nächsten Reboot. Vor dem Reboot sollte man einen korrigierten Kernel installieren. Dann ist auch nach dem nächsten Reboot das Problem erledigt.

Eine ander schnelle Lösung (auch gegen andere Angriffe) ist möglicherweise das bei securityteam.com zu findende »No Ptrace Module (NPT)«. Man kann es als "npt.c" speichern, mit "gcc -o npt.o -c npt.c" compilieren und in "/lib/modules/..." speichern, anschließend mit "insmod npt" laden, und schon funktioniert bei Thorsten Möllers zumindest der Demo-Exploit nicht mehr.

Thorsten Möllers fragte auch bei den Autoren nach, ob der Code frei ist (GPL oder BSD), damit man eine Zeile "MODULE_LICENSE("GPL");" einfügen darf, um die tainted-Meldung beim Laden des Modules zu unterdrücken. Die Antwort liegt noch nicht vor.

Dann muß man noch eine passende Stelle im Bootprozeß finden, damit das Modul immer möglichst früh geladen wird. Andererseits sollte man sich die Frage stellen, ob man diesem Modul wirklich vertrauen will. Eine Inspektion des Quellcodes kann hier nicht schaden. (Dank an Thorsten Möllers.)

Werbung
Kommentare (Insgesamt: 38 || Alle anzeigen )
Re: funktioniert nicht (Jan Schmidt, Di, 25. März 2003)
funktioniert nicht (Jan Schmidt, Di, 25. März 2003)
Re: linux (Descartes, Di, 25. März 2003)
Re: linux (Thomas, Di, 25. März 2003)
Re: linux (Descartes, Di, 25. März 2003)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung