Neuer Angriff auf mikroarchitektonische Strukturen von Intel- und AMD-Prozessoren

Eine Gruppe von Forschern der University of Virginia und der University of California präsentierte eine neue Art von Angriff auf die mikroarchitektonischen Strukturen von Intel- und AMD-Prozessoren, die beim Reverse Engineering undokumentierter CPU-Funktionen identifiziert wurden. Die vorgeschlagene Angriffsmethode beinhaltet die Verwendung eines zwischengeschalteten Micro-Op-Cache in Prozessoren, der zum Abrufen von Informationen verwendet werden kann, die während der spekulativen Ausführung von Anweisungen gesammelt werden.

Zu Optimierungszwecken beginnt der Prozessor mit der Ausführung einiger Anweisungen im spekulativen Modus, ohne auf den Abschluss vorheriger Berechnungen zu warten. Wenn er dann feststellt, dass die Vorhersage nicht gerechtfertigt war, setzt er den Vorgang auf seinen ursprünglichen Zustand zurück, setzt die dabei verarbeiteten Daten jedoch zurück Die spekulative Ausführung wird in einem Cache abgelegt, dessen Inhalt bestimmt werden kann.

Es wird darauf hingewiesen, dass die neue Methode den Spectre v1-Angriff deutlich übertrifft, die Erkennung des Angriffs erschwert und nicht durch bestehende Methoden zum Schutz vor Seitenkanalangriffen blockiert wird, die darauf ausgelegt sind, Schwachstellen zu blockieren, die durch die spekulative Ausführung von Anweisungen (z. B. die Verwendung) verursacht werden Der LFENCE-Befehl blockiert Lecks in den letzten Phasen der spekulativen Ausführung, schützt jedoch nicht vor Lecks durch mikroarchitektonische Strukturen.

Betroffen von der Methode sind Intel- und AMD-Prozessormodelle, die seit 2011 auf den Markt kamen, darunter die Intel-Skylake- und AMD-Zen-Serien. Moderne CPUs unterteilen komplexe Prozessoranweisungen in einfachere RISC-ähnliche Mikrooperationen, die in einem separaten Cache zwischengespeichert werden. Dieser Cache unterscheidet sich grundlegend von Caches höherer Ebenen, ist nicht direkt zugänglich und fungiert als Stream-Puffer für den schnellen Zugriff auf die Ergebnisse der Dekodierung von CISC-Befehlen in RISC-Mikrobefehle. Forscher haben jedoch einen Weg gefunden, Bedingungen zu schaffen, die auftreten, wenn Cache-Zugriffskonflikte auftreten, und es einem zu ermöglichen, den Inhalt des Mikrooperations-Cache zu beurteilen, indem Unterschiede in der Ausführungszeit bestimmter Aktionen analysiert werden.

Neuer Angriff auf mikroarchitektonische Strukturen von Intel- und AMD-Prozessoren

Der Mikrooperations-Cache in Intel-Prozessoren ist in Bezug auf CPU-Threads segmentiert (Hyper-Threading), während AMD Zen-Prozessoren einen gemeinsam genutzten Cache verwenden, der Bedingungen für Datenlecks nicht nur innerhalb eines Ausführungsthreads, sondern auch zwischen verschiedenen Threads in SMT schafft (mögliche Datenlecks zwischen Code, der auf verschiedenen logischen CPU-Kernen ausgeführt wird).

Forscher haben eine grundlegende Methode zur Erkennung von Änderungen im Mikrooperations-Cache und mehrere Angriffsszenarien vorgeschlagen, die es ermöglichen, versteckte Datenübertragungskanäle zu erstellen und anfälligen Code zu verwenden, um vertrauliche Daten preiszugeben, und zwar sowohl innerhalb eines einzelnen Prozesses (z. B. um Prozessdaten bei der Ausführung preiszugeben). Code von Drittanbietern in Engines mit JIT und in virtuellen Maschinen) und zwischen dem Kernel und Prozessen im Benutzerbereich.

Bei der Organisation einer Variante des Spectre-Angriffs mithilfe eines Mikrooperations-Cache konnten die Forscher eine Leistung von 965.59 Kbit/s mit einer Fehlerrate von 0.22 % und 785.56 Kbit/s bei Verwendung der Fehlerkorrektur erreichen, wenn ein Leck innerhalb derselben Adresse organisiert wurde Speicherplatz und Berechtigungsstufe. Bei einem Leck über verschiedene Berechtigungsstufen (zwischen Kernel und Userspace) betrug die Leistung 85.2 Kbit/s mit hinzugefügter Fehlerkorrektur und 110.96 Kbit/s mit einer Fehlerrate von 4 %. Beim Angriff auf AMD Zen-Prozessoren, der ein Leck zwischen verschiedenen logischen CPU-Kernen verursachte, betrug die Leistung 250 Kbit/s mit einer Fehlerrate von 5.59 % und 168.58 Kbit/s mit Fehlerkorrektur. Im Vergleich zur klassischen Spectre-v1-Methode war der neue Angriff 2.6-mal schneller.

Es wird erwartet, dass der Schutz vor einem Micro-Op-Cache-Angriff Änderungen erfordert, die die Leistung stärker beeinträchtigen, als wenn Sie den Spectre-Angriffsschutz aktiviert hätten. Als optimaler Kompromiss wird vorgeschlagen, solche Angriffe nicht durch die Deaktivierung des Cachings zu blockieren, sondern auf der Ebene der Überwachung von Anomalien und der Identifizierung von Cache-Zuständen, die für Angriffe typisch sind.

Wie bei Spectre-Angriffen erfordert die Organisation eines Lecks aus dem Kernel oder anderen Prozessen die Ausführung einer bestimmten Befehlsfolge (Gadgets) auf Seiten der Opferprozesse, was zu einer spekulativen Ausführung von Anweisungen führt. Im Linux-Kernel wurden etwa 100 ähnliche Gadgets gefunden, die entfernt werden. In regelmäßigen Abständen werden jedoch Problemumgehungen für deren Generierung gefunden, beispielsweise im Zusammenhang mit der Ausführung speziell entwickelter BPF-Programme im Kernel.

Source: opennet.ru

Kommentar hinzufügen