Forscher des Massachusetts Institute of Technology haben die Angriffstechnik TONTOU (Time-of-Neutralization to Time-of-Use) identifiziert, die eine neue Möglichkeit zur Ausnutzung mikroarchitektonischer Schwachstellen der Klasse Spectre v2 bietet. Die Schwachstelle ermöglicht es, den Inhalt des Kernspeichers wĂ€hrend der AusfĂŒhrung des Exploits im Benutzerspeicher zu bestimmen. Der Code zur Blockierung der Ausnutzung der Schwachstelle wurde am 5. August in den Linux-Kernel aufgenommen und ist in den Versionen 7.1.7, 6.18.43, 6.12.102, 6.6.149, 6.1.181, 5.15.214 und 5.10.263 enthalten.
Die Forscher haben gezeigt, dass ein lokaler unprivilegierter Benutzer in der Lage ist, den Hash des Root-Passworts, das in der Datei /etc/shadow gespeichert ist und bei der Authentifizierung im System in den Speicher geladen wird, zu bestimmen. Den Forschern gelang es, mit einer Geschwindigkeit von 5,47 Byte pro Sekunde Daten aus dem Kernspeicher auszulesen und dabei eine Genauigkeit von 91,97 % zu erreichen. Bei 10 TestdurchlÀufen des Exploits, die im Durchschnitt 18 Minuten dauerten, konnte in der HÀlfte der FÀlle erfolgreich festgestellt werden, ob die Datei /etc/shadow im Speicher vorhanden war, und deren Inhalt extrahiert werden.
Der Exploit wurde auf Systemen mit AMD-Prozessoren demonstriert und kann mit CPUs der AMD-Familien Zen 1-4 eingesetzt werden. Auf Intel-Systemen ist der Angriff ebenfalls möglich, aber die Ausnutzung ist komplexer. Zum Schutz vor RĂŒcksprungadressenĂŒberlauf und zur Blockierung der Schwachstelle SRSO (Speculative Return Stack Overflow) verwenden AMD-Prozessoren den Schutzmechanismus Safe-RET, der den Vorhersagepuffer nach jeder Verwendung leert und das Fenster fĂŒr den Angriff auf 2 Anweisungen, die in mehreren Dutzend Nanosekunden ausgefĂŒhrt werden, verengt.
Um diesen Schutz zu umgehen und das Fenster fĂŒr den Angriff zu erweitern, wurde eine Technik zur Verzögerung der CPU implementiert, die es ermöglichte, die Interrupt-Ersatzoperation zum richtigen Zeitpunkt auszufĂŒhren, um den Ablauf im Kernel umzuleiten und den Interrupt-Handler zu nutzen, um den Eintrag im Verlaufspuffer zu manipulieren. Um die SRSO-SicherheitsanfĂ€lligkeit auszunutzen, kann der Angreifer Bedingungen schaffen, unter denen der Verlaufsvorhersageblock spekulativ eine groĂe Anzahl von falsch vorhergesagten CALL-Aufrufen ausfĂŒhrt, was ausreicht, um den RĂŒckgabeadressstapel zu ĂŒberlaufen und korrekt vorhergesagte RĂŒckgabepunkte, die sich am Anfang des Stapels befinden, zu ĂŒberschreiben. Infolgedessen können die anfĂ€nglichen Elemente des Stapels durch die vom Angreifer gewĂ€hlten Werte ĂŒberschrieben werden, was dazu fĂŒhrt, dass diese ersetzten Werte bei der spekulativen AusfĂŒhrung der RET-Anweisung im Kontext eines anderen Prozesses verwendet werden.
Der Prozessor wird feststellen, dass die Vorhersage der Verzweigung fehlgeschlagen ist und den Vorgang auf den Ursprungszustand zurĂŒcksetzen, aber die im Verlauf der spekulativen AusfĂŒhrung verarbeiteten Daten bleiben im Cache und in mikroarchitektonischen Puffern gespeichert. Wenn der falsch ausgefĂŒhrte Block auf den Speicher zugreift, fĂŒhrt seine spekulative AusfĂŒhrung dazu, dass Daten im gemeinsamen Cache gespeichert werden, die aus dem Speicher gelesen wurden. Zur Informationsbeschaffung aus dem Cache kann eine der Methoden zur Bestimmung des Cacheinhalts basierend auf der Analyse der Zugriffszeit auf gecachte und nicht gecachte Daten angewendet werden.
Quelle: opennet.ru
