Ein neuer Angriff namens Inception kann dazu verwendet werden, sensible Daten von jeder AMD-CPU preiszugeben.
Die zentralen Thesen
- Forscher der ETH Zürich haben einen neuen transienten Ausführungsangriff namens Training in Transient Execution entwickelt (TTE), das spekulative Ausführung ausnutzt, um Kernel-Speicher zu verlieren und auf sensible Dateien wie /etc/shadow unter Linux zuzugreifen Maschinen.
- Inception, der mit TTE erstellte End-to-End-Exploit, kann auf AMD Zen 4 bis zu 39 Bytes pro Sekunde verlieren Prozessoren und rufen innerhalb von 40 Jahren erfolgreich gehashte Benutzerkontokennwörter ab, die in /etc/shadow gespeichert sind Protokoll.
- Inception unterscheidet sich von anderen Angriffen mit vorübergehender Ausführung durch das Einfügen neuer Vorhersagen in den Zweigprädiktor während des Angriffs Übergangsfenster, wodurch leistungsfähigere Übergangsfenster erstellt werden, die verwendet werden können, um den Rückgabestapelpuffer zu überlaufen und die Kontrolle darüber zu erlangen die CPU. Die Auswirkungen dieses Angriffs abzumildern, ist offenbar eine Herausforderung.
Im Gefolge von ZenbleedForscher der ETH Zürich haben eine neue Klasse von Transient-Execution-Angriffen entwickelt, die als Training in Transient Execution (TTE) bezeichnet werden. Mithilfe von TTE erstellten die Forscher einen End-to-End-Exploit namens Inception. Auf AMD Zen 4 kann es zu Kernel-Speicherlecks mit einer Rate von bis zu 39 Bytes pro Sekunde kommen, und die Forscher konnten /etc/shadow auf einem durchsickern lassen Linux Maschine in 40 Minuten. Diese Datei enthält gehashte Benutzerkonto-Passwörter und wird vom System geschützt und ist nur für den Root-Benutzer zugänglich. Mit anderen Worten: Dieser Exploit ist wirklich schlecht.
Wie funktioniert Inception?
Wie bei Zenbleed, Beginn (CVE-2023-20569, über Piepender Computer) missbraucht die spekulative Ausführung in ihrer Funktionsweise. Verzweigungsvorhersage und spekulative Ausführung beziehen sich im Allgemeinen darauf, dass Ihr Computer Vorgänge ausführt, die noch nicht benötigt werden, aber wahrscheinlich in nachfolgenden Zyklen benötigt werden. Dies geschieht häufig in Zeiten, in denen Ihr System über freie Ressourcen verfügt, da es die Gesamtverarbeitung beschleunigt, wenn Anweisungen oder Daten sonst noch nicht für die CPU bereit wären. Wenn die geleistete Arbeit nicht benötigt wird, wird sie normalerweise verworfen und der Prozessor kann dorthin zurückspringen, wo er benötigt wird, um den nächsten, richtigen Befehl auszuführen. Wenn dies geschieht, spricht man von einer Fehlvorhersage des Zweigs.
Es gibt jedoch viele Probleme bei der spekulativen Ausführung und Schwachstellen wie Spectre und Zenbleed sind die Folge davon. Diese Forscher kombinierten einen älteren Exploit namens „Phantom“ (der die Architekturen Zen 1 und Zen 2 betraf) mit ihrem TTE-Angriff, um Inception zu erstellen.
„Inception“ ist eine Anspielung auf den gleichnamigen Film, in dem es darum geht, jemandem beim Träumen eine Idee in den Kopf zu pflanzen. In diesem Fall geben die Forscher an, dass sie eine „Idee“ in die CPU einpflanzen, während diese gewissermaßen in Betrieb ist. "träumend." Dies führt dazu, dass falsche Anweisungen ausgeführt werden, was es Inception ermöglicht, den Kontrollfluss zu kapern der CPU.
BTB ist der Branch Target Buffer und RSB ist der Return Stack Buffer. Aus dem Whitepaper von Inception:
„Im ersten Trainingsschritt T1 führt der Angreifer einen Trainingszweig bei TJ aus, der mit dem BTB-Eintrag der PHANTOMJMP-Quelle PJ kollidiert. PJ befindet sich im Kernel-Adressraum und ist die Adresse, die den rekursiven PHANTOMCALL initiiert. Die Opferrückkehr VR wird im Kontrollfluss nach PJ zugewiesen. Das Ziel des PHANTOMJMP ist auf PC eingestellt, an dem der rekursive PHANTOMCALL ausgelöst wird. Im Trainingsschritt T2 führt der Angreifer einen Trainingsanruf bei TC aus, der mit PC im BTB kollidiert, wodurch die Vorhersage für den PHANTOMCALL erstellt wird. Das Ziel dieses Trainingsaufrufs ist auf PC eingestellt, wodurch eine rekursive PHANTOMCALL-Vorhersage erstellt wird. Bei der Ausführung von PC injiziert die CPU daher rekursiv RSB-Vorhersagen in das Offenlegungsgerät G, dessen Standort unmittelbar auf den PHANTOMCALL auf dem PC folgt. Da sich der PC im Kernel-Bereich befindet, lösen die Trainingszweige TJ und TC Seitenfehler aus, die wir beheben.“
Der Unterschied zwischen Inception und den meisten Angriffen mit vorübergehender Ausführung besteht darin, dass während des Übergangsfensters stattdessen neue Vorhersagen in den Zweigprädiktor eingefügt werden. Mit jeder Einfügung werden weitere Übergangsfenster erstellt, die leistungsfähiger sein können als die vorherigen. Im Fall von Phantom (CVE-2022-23825) kann mit beliebigen Anweisungen ein transientes Fenster erstellt werden. Dies bedeutet, dass Anweisungen (z. B. ein Exklusiv-Oder oder XOR) als Aufrufanweisung verwendet werden können und weitere transiente Fenster erstellen. Dies wird dann verwendet, um den Rückgabe-Stack-Puffer zu überlaufen.
Was kannst du tun?
Im Moment kann man nicht viel tun, und selbst im Fall von AMD ist es schwer zu sagen, was sie tatsächlich dagegen tun können. Um die Auswirkungen vollständig abzumildern, müsste AMD den Markenprädiktor löschen, während zwischen Kontexten gewechselt wird, was unglaublich leistungsintensiv sein kann.
AMD hat eine andere Abhilfemaßnahme vorgeschlagen, und zwar eine, die dazu führt, dass AMD sich dafür entschieden hat, dass alle indirekten Zweige gewaltsam fälschlicherweise zu einem harmlosen Standort führen. Bis Patches verfügbar sind, ist Ihre Hardware jedoch anfällig.
A Papier über Inception wird unter vorgestellt USENIX-Sicherheit 2023 und ein Papier Über Phantom-Spekulationen wird unter präsentiert MIKRO 2023. Sie können diese Dokumente lesen, um mehr über den Exploit zu erfahren.