21.12.2016 | Bochum, Autor: Tim Berghoff

Mit Hardware-Bugs direkt in den Kernel

Wie sich die Speicherverwürfelung mit Hilfe der CPU überlisten lässt

Der so genannte Kernel eines Betriebssystems ist das Hauptziel vieler Angriffe. Wer Zugriff auf ihn hat, der kann innerhalb des Systems beinahe alles: Treiber installieren und nachladen, Daten auslesen und Informationen manipulieren. Um Angriffe auf den Kernel zu erschweren, ändert die KASLR beim Systemneustart die Speicheradressen nach einem Zufallsmuster. In seinem Artikel über verschiedene Angriffswege gibt Anders Fogh (G DATA Advanced Analytics) einen umfassenden Einblick in verschiedene Wege, über die man trotzdem Zugriff erlangen kann.

Hauptangriffsziel Kernel

Bei jedem Systemstart wird der Kernel in den Arbeitsspeicher des Systems geladen. Der Bereich, in dem der Betriebssystem-Kernel liegt, nennt sich "Kerneladressraum" (Kernel Address Space, KAS). 
Kernelfunktionen sind aufgrund von Kernel-Bugs für Exploits über Speicheradressen erreichbar. Ein Exploit, die auf Speicheradressen zugreifen möchte, muss diese also kennen. Einem System können durch die Manipulation von Daten im Kerneladressraum eigene Anweisungen untergeschoben werden, was Ziel der meisten Angriffe ist. Die Absichten sind dahinter sind vielfältig und reichen von der Installation von Schadsoftware bis zum Diebstahl von Daten. Dazu muss ein Angreifer wissen, an welche Stelle im Speicher er Änderungen senden muss, damit sie umgesetzt werden. Kennt er die Speicheradressen nicht,  hat der Angriff keine Aussicht auf Erfolg.

Unter Sicherheitsgesichtspunkten wäre es also fatal, wenn Kernelfunktionen immer an derselben Speicheradresse zu finden wären. Auf diese Weise könnte ein Angreifer versuchen, direkt auf den KAS zuzugreifen. Abhilfe wurde geschaffen, indem man die Zuordnung von Speicherbereichen bei jedem Systemstart nach einem Zufallsmuster verwürfelt. Man spricht hier von Kernel Address Space Layout Randomization (kurz: KASLR), oder der Verwürfelung von Kerneladressraum. Diese softwarebasierte Lösung stellt sicher, dass ein Angreifer sich nie sicher sein kann, wo im Arbeitsspeicher die für ihn relevanten Informationen gespeichert sind. Selbst, wenn er mühsam all diese Informationen gesammelt hat, sind sie spätestens nach dem nächsten Neustart wertlos.

Schwachstellen in Code und Hardware

Es sind in aller Regel Fehler im Quellcode des Kernels, die einen erfolgreichen Angriff ermöglichen. Hersteller sind daher bemüht, solche Fehler zu vermeiden. Aufgrund der steigenden Komplexität wird es jedoch zunehmend schwierig, alle diese Sicherheitslücken zu schließen.

Schwachstellen im Kernel zu finden ist auch für Angreifer nicht trivial und mit teils hohem finanziellen Aufwand verbunden: die Suche nach nutzbaren Schwachstellen kostet Zeit und damit Geld. Wer diese Zeit nicht investieren kann oder will, kann das entsprechende Wissen auch von außen zukaufen. Der Handel mit dieser Art von Know-How floriert seit Jahren und ist überaus einträglich.

Es gibt jedoch mehrere Wege, die es möglich machen, in die "interessanten" Bereiche des Arbeitsspeichers einzudringen, ohne mühsam nach Schwachstellen im Kernel zu suchen. Angreifer können sich hierzu einiger Funktionen bedienen, die moderne CPUs zur Performance-Optimierung nutzen, wie TSX, Prefetch und BTB. 

Umwege und Abkürzungen

Das grundsätzliche Problem sind immer noch Kernel-Bugs. Nur diese ermöglichen es Angreifern, ein System erfolgreich zu kompromittieren.

Die Verwürfelung des Speichers selbst ist aber noch immer eine softwarebasierte Lösung, die genutzt wird, um die Auswirkungen eines anderen Softwareproblems abzumildern. Es ist also nur logisch, dass Angreifer versuchen, diese komplett zu umgehen. Dazu lässt man den Umweg über Betriebssysteme außen vor und begibt sich eine Ebene weiter hinunter, auf die Hardware. Hier stehen mehr Möglichkeiten offen. Insgesamt sind vier Wege bekannt, die für die Umgehung der Speicherverwürfelung nutzbar sind. Davon sind drei praktisch relevant. Sie basieren auf verschiedenen Features moderner CPUs, die sich nutzen lassen, um direkten Zugriff auf den Kerneladressraum zu erhalten.

Konzeptionell sind diese Methoden sehr komplex, die Durchführung ist allerdings vergleichsweise einfach. Mit den entsprechenden Werkzeugen können Angreifer in weniger als einer Sekunde herausfinden, an welcher Stelle im Arbeitsspeicher die interessanten Informationen liegen. Auf diese Weise durchgeführte Angriffe auf das System sind für klassische Sicherheitslösungen schwer bis gar nicht zu entdecken, da der Angriff auf Hardware-Ebene stattfindet. Alles, was ein Angreifer benötigt, ist bereits in Form ebendieser Hardware auf dem System vorhanden.

Die Möglichkeiten sind beunruhigend:
Da die beschriebene Technik unabhängig vom Betriebssystem ist und auch über die Grenzen zwischen virtuellen Umgebungen hinaus funktioniert, sind Cloud-Anbieter an dieser Stelle als Ziel besonders interessant.

Mehr Informationen

Wer gerne mehr zu den technischen Hintergründen dieser Angriffsmöglichkeiten und potenzielle Gegenmaßnahmen wissen möchte, kann dies im vollständigen Artikel von Anders Fogh nachlesen, im Blog von G DATA Advanced Analytics (Artikel in englischer Sprache).


Share this article

G DATA | Trust in German Sicherheit