Google hat vor kurzem mehrere Prototyp-Exploits veröffentlicht , die die Möglichkeit aufzeigen, Spectre-Klasse -Schwachstellen auszunutzen, indem JavaScript-Code in einem Browser ausgeführt wird, ohne zuvor hinzugefügte Sicherheitsmaßnahmen zu durchlaufen.
Mithilfe von Sicherheitslücken kann man Zugriff auf den Speicher eines Prozesses erlangen , der Webinhalte im aktuellen Tab verarbeitet. Um die Funktionsfähigkeit der Sicherheitslücke zu testen, wurde die Webseite der geleakten Seite aufgerufen und der Code, der die Funktionsweise beschreibt, auf GitHub veröffentlicht.
Der vorgeschlagene Prototyp ist für Angriffe auf Systeme mit Intel Core i7-6500U Prozessoren in einer Umgebung mit Linux und Chrome 88 konzipiert, wobei dies die Möglichkeit von Änderungen zur Nutzung des Exploits in anderen Umgebungen nicht ausschließt.
Die Funktionsweise ist nicht auf Intel -Prozessoren beschränkt : Nach entsprechender Anpassung konnte bestätigt werden, dass der Exploit auch auf Systemen mit CPUs anderer Hersteller funktioniert, darunter der Apple M1 auf Basis der ARM-Architektur. Mit geringfügigen Anpassungen ist der Exploit auch auf anderen Betriebssystemen und Browsern mit Chromium-Engine lauffähig.
In einer Umgebung, die auf Standardprozessoren von Chrome 88 und Intel Skylake basiert, wurde ein Datenleck aus dem Prozess erzielt, der für das Rendern von Webinhalten auf der aktuellen Registerkarte "Chrome" (Rendering-Prozess) mit einer Geschwindigkeit von 1 Kilobyte pro Sekunde verantwortlich ist. Darüber hinaus wurden alternative Prototypen entwickelt, beispielsweise ein Exploit, der es auf Kosten einer verringerten Stabilität ermöglicht, die Leckrate bei Verwendung des timers performance.now () mit einer Genauigkeit von 8 Mikrosekunden (5 Millisekunden) auf 0.005 kB / s zu erhöhen ). Es wurde auch eine Variante entwickelt, die mit einer Zeitgenauigkeit von einer Millisekunde arbeitet und verwendet werden kann, um den Zugriff auf den Speicher eines anderen Prozesses mit einer Geschwindigkeit von etwa 60 Bytes pro Sekunde zu organisieren.
Der veröffentlichte Demo-Code besteht aus drei Teilen:
- Der erste Teil Kalibrieren Sie den Timer, um die Laufzeit abzuschätzen der Operationen, die erforderlich sind, um Daten abzurufen, die aufgrund der spekulativen Ausführung von CPU-Anweisungen im Prozessor-Cache verbleiben.
- Der zweite Teil Definiert das Speicherlayout, das beim Zuweisen des JavaScript-Arrays verwendet wird.
- Der dritte Teil nutzt die Spectre-Schwachstelle direkt aus, um den Speicherinhalt zu ermitteln des aktuellen Prozesses als Ergebnis der Erstellung von Bedingungen für die spekulative Ausführung bestimmter Operationen, deren Ergebnis vom Prozessor nach Ermittlung einer fehlgeschlagenen Prognose verworfen wird. Die Ausführungsspuren werden jedoch im gemeinsam genutzten Cache abgelegt und können mithilfe von wiederhergestellt werden Methoden zum Ermitteln des Inhalts des Caches mithilfe von Kanälen von Drittanbietern, die die Änderung der Zugriffszeit auf zwischengespeicherte und nicht zwischengespeicherte Daten analysieren.
Die vorgeschlagene Ausnutzungstechnik ermöglicht es, auf die über die performance.now() API verfügbaren hochpräzisen Timer und die Unterstützung des SharedArrayBuffer-Typs zu verzichten, der das Erstellen von Arrays im gemeinsamen Speicher ermöglicht.
Der Exploit umfasst das Spectre-Gerät, das eine kontrollierte spekulative Codeausführung ermöglicht, und einen Seitenkanal-Leak-Analysator, der ermittelt, welche Daten während der spekulativen Ausführung in den Cache eingegeben wurden.
Das Gerät wird mithilfe eines JavaScript-Arrays implementiert, in dem versucht wird, auf einen Bereich außerhalb der Puffergrenzen zuzugreifen . Dies beeinflusst den Zustand des Sprungvorhersageblocks aufgrund einer vom Compiler hinzugefügten Puffergrößenprüfung (der Prozessor führt spekulativ einen frühen Zugriff durch, stellt den Zustand aber nach der Prüfung wieder her).
Um den Inhalt des Caches unter Bedingungen unzureichender Timergenauigkeit zu analysieren, wurde ein Verfahren vorgeschlagen, das die in Prozessoren verwendete Strategie zur Räumung von Tree-PLRU-Cache-Daten auslöst und es ermöglicht, durch Erhöhen der Anzahl von Zyklen die Differenzzeit bei dem Wert signifikant zu erhöhen wird aus dem Cache zurückgegeben und wenn kein Wert im Cache vorhanden ist.
Google hat einen Prototyp des Exploits veröffentlicht, um die Machbarkeit von Angriffen unter Ausnutzung von Spectre-Schwachstellen zu demonstrieren und Webentwickler zu ermutigen, Techniken anzuwenden, die das Risiko solcher Angriffe minimieren.
Gleichzeitig ist Google davon überzeugt, dass es ohne eine wesentliche Überarbeitung des vorgeschlagenen Prototyps unmöglich ist, universelle Exploits zu erstellen, die nicht nur zur Demonstration, sondern auch für den breiten Einsatz bereit sind.
Quelle: https://security.googleblog.com