Die Angriffsfläche für lokale Angriffe sehen Ormandy und Tinnes sowohl unter Windows als auch unter Linux als sehr groß an. Es ist davon auszugehen, dass normales IT-Expertenwissen ausreicht, um mit im Web verfügbaren Anleitungen in den Kernel einzudringen. Zwar werden immer wieder Lücken geschlossen, es tauchen allerdings auch ständig neue Exploits im Web auf, so dass sich mit ein wenig Geduld für nahezu jeden Rechner eine Exploit-Anleitung findet, gegen die er nicht gepatcht ist.
Für einige ungepatchte Bugs existieren fertige Exploits, die ein Angreifer nur ausführen muss. Die meisten verschaffen dem Nutzer eine Shell mit Superuser-Rechten.
Die beiden Experten sehen das Problem in grundsätzlichen Schwächen der Kernel-Security. Im Kernel gibt es, anders als in der Heapverwaltung der Usermode-Prozesse, nahezu keinen Schutz gegen Korrumpierung der Speicherverwaltung. Dieses Problem hätten die Betriebssystemhersteller in der Vergangenheit verkannt. Sie wendeten sich ihm erst in jüngster Zeit zu.
So hat Microsoft mit Windows 7 eine Technologie namens "Safe Unlinking" für die Freigabe von Speicher im "Pool" eingeführt. Der Pool entspricht im Kernel etwa einem Heap für Usermode-Prozesse. Doch gleichzeitig warnt Microsoft vor allzu großer Euphorie: "Das bedeutet nicht, dass es unmöglich wird, Pool-Überläufe auszunutzen, aber es erschwert die Arbeit eines Angreifers erheblich.", erklärt der Softwareriese in einem Technet-Blog. Unter Linux gibt es das Projekt grsecurity, um lokale Angriffe auf den Kernel zu erschweren.
Generell gilt die Regel, wer seinen Benutzern Shell-Access ermöglicht, etwa per SSH oder Remote Desktop (Terminal Server), muss damit rechnen, dass das System leicht verwundbar ist. Hat der Angreifer erst einmal Superuser-Rechte, ist er nur durch seine Phantasie begrenzt. So kann er beispielsweise einen Keylogger installieren, um weitere Passwörter zu erhalten.
Unter Windows besteht zudem die Möglichkeit, die gecachten Login-Credentials auszulesen. Die Passwörter liegen zwar nur als nicht reversibel verschlüsselte Hashwerte vor, diese lassen sich jedoch mittels Pass-the-Hash-Angriff zum Einloggen verwenden. So kann etwa ein illoyaler Mitarbeiter Zugangsdaten eines Administrators stehlen, wenn er sich auf einem Terminal-Server einloggt, auf dem sich zuvor ein Administrator angemeldet hat.
Ormandy und Tinnes haben einen interessanten Sonderfall eines lokalen Kernel-Angriffs beschrieben: Falls ein Rechner mittels Containervirtualisierung in mehrere logische Rechner aufgeteilt wurde, kann man durch Kernel-Hacking Zugriff auf alle Container erhalten. Containervirtualisierung mit Produkten wie OpenVZ, Virtuozzo und lxc wird vor allem bei Hostern in Rechenzentren eingesetzt. Günstige Angebote für virtuelle Server gibt es bereits für unter fünf Euro im Monat.
Wer einen virtuellen Server anmietet, bekommt Root-Zugang per SSH-Shell. Somit bietet sich dieselbe Angriffsfläche wie bei einem physikalischen Rechner. Gelangt man per Hack in den Kernel, kann man leicht aus seinem "chroot-Gefängnis" ausbrechen und Kontrolle über alle Dateien und Prozesse erlangen. Das heißt, ein Kernel-Hack ermöglicht Vollzugriff auf die Container anderer Kunden des Hosters.
Neueste Kommentare
7 Kommentare zu Lücken im Kernel: So brechen Hacker in jeden Rechner ein
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
Absurder Gedanke
Trotz aller Sicherheitsbedenken finde ich die Idee, den Kernel gegen sich selbst abzusichern eine recht absurde Idee. Man kann sich nicht selbst gleichzeitig etwas ermöglichen und verbieten.
Man kann Menschen daran hindern, in einen Knast reinzukommen, oder aus ihm auszubrechen. Das hindert Gefangene aber nicht daran, sich gegenseitig auf die Schnauze zu hauen. Irgendwo ist immer ein totes Ende. Kommt drauf an, wie weit man gehen will mit der Sicherheit.
> sollte man Microsofts Sicherheitsfestung Forefront einsetzen.
Auch nicht schlecht. Wir verdienen Geld, indem wir Schutz für die Unzulänglichkeiten des eigenen Produks anbieten…
Mehr Ausführlichkeit zur Übernahme aus einem virtuellen Server heraus gewünscht
Wenn ich den Artikel richtig verstanden habe kann man also auch nur mit Zugang auf virtuelle Maschinen aus dieser „ausbrechen“ und den ganzen Server übernehmen? Ich dachte immer virtuelle Maschinen sollen sicher sein bisher. Ich kenne mich leider nicht genügend mit der Materie aus, aber es wäre ein sehr schöner weiterer Artikelvorschlag das zu erläutern. Aus den wenigen Sätzen wird mir nicht ganz klar wo genau Zugriff auf’s virtuelle und „echte“ System gemeint ist.
AW: Mehr Ausführlichkeit zur Übernahme aus einem virtuellen Server heraus gewünscht
Ein Einbruch in andere virtuelle Maschinen durch Kernel-Lücken ist möglich bei Containervirtualisierung (Virtuozzo, openVZ, lxc), nicht aber bei Vollvirtualisierung (VMware, Hyper-V, VirtualBox, kvm, etc.).
Bei Vollvirtualisierung ist ein Einbruch möglich durch Fehler im Hypervisor. Der Hypervisor ist aber wegen der geringeren Angriffsfläche besser geschützt.
Und nu?
Alle Rechner abschalten oder was?
Darwin
Schöner Beitrag. Aber weis jemand, wie das im Darwin Kernel von OS X aussieht? Ist da eine ähnliche Technik verbaut?
AW: Darwin
mac ist unix/linux
AW: AW: Darwin
Unix ja! Linux Nein!
Darwin ist ein Unix-Kernel basierend auf BSD und MACH. Hat mit dem Linux-Kernel nichts zu tun.
Die Google-Forscher haben Mac OS X weitgehend außer Acht gelassen, da Mac OS kaum in öffentlichen Webservern eingesetzt wird.
Die Sicherheitsabteilung von Google interessiert sich verständlicherweise in erster Linie dafür, ob und wie jemand aus dem Internet auf ihre Server einrechen kann.