Neue Technik zur Ausnutzung von Spectre-Sicherheitsanfälligkeiten in Chrome

Ein Team von Forschern aus amerikanischen, australischen und israelischen Universitäten hat eine neue Methode für Seitenkanalangriffe zur Ausnutzung von Spectre-Sicherheitsanfälligkeiten in Chromium-basierten Browsern vorgestellt. Der Angriff, der den Codenamen Spook.js trägt, ermöglicht es, durch das Ausführen von JavaScript-Code den Mechanismus zur Isolierung von Webseiten zu umgehen und den Inhalt des gesamten Adressraums des aktuellen Prozesses zu lesen. Damit können Daten von Seiten abgerufen werden, die in anderen Tabs geöffnet sind, aber im selben Prozess verarbeitet werden.

Da Chrome verschiedene Webseiten in separaten Prozessen ausführt, sind praktische Angriffe auf Dienste, die es unterschiedlichen Nutzern erlauben, ihre Seiten zu hosten, eingeschränkt. Diese Methode ermöglicht es, von der Seite, auf der der Angreifer seinen JavaScript-Code einbinden kann, festzustellen, ob andere vom gleichen Nutzer besuchte Seiten auf derselben Webseite geöffnet sind, und vertrauliche Informationen daraus zu extrahieren, wie beispielsweise Anmeldedaten oder Bankdaten, die von der Auto-Ausfüllfunktion in Webformularen bereitgestellt werden. Zur Veranschaulichung wird gezeigt, wie man einen fremden Blog auf Tumblr angreifen kann, wenn dessen Besitzer in einem anderen Tab den Blog eines Angreifers öffnet, der ebenfalls auf derselben Plattform gehostet ist.

Video abspielen

Eine weitere Anwendung dieser Methode ist der Angriff auf Browsererweiterungen. Hierbei kann beim Installieren einer Angreifer-kontrollierten Erweiterung Daten aus anderen Erweiterungen extrahiert werden. Als Beispiel wird gezeigt, wie man durch die Installation einer schädlichen Erweiterung vertrauliche Informationen aus dem Passwortmanager LastPass abrufen kann.

Video abspielen

Forscher haben einen Prototyp eines Exploits veröffentlicht, der auf Chrome 89 auf Systemen mit Intel i7-6700K und i7-7600U CPUs funktioniert. Bei der Erstellung des Exploits wurden zuvor von Google veröffentlichte Prototypen von JavaScript-Code verwendet, um Angriffe der Spectre-Klasse durchzuführen. Es wird berichtet, dass es den Forschern gelungen ist, funktionierende Exploits für Systeme mit Intel- und Apple M1-Prozessoren zu entwickeln, die das Lesen von Speicher mit einer Geschwindigkeit von 500 Byte pro Sekunde und einer Genauigkeit von 96 % ermöglichen. Es wird angenommen, dass die Methode auch für AMD-Prozessoren anwendbar ist, jedoch konnte kein vollständig funktionsfähiger Exploit entwickelt werden.

Der Angriff ist auf alle Browser mit Chromium-Engine anwendbar, einschließlich Google Chrome, Microsoft Edge und Brave. Die Forscher glauben außerdem, dass die Methode für Firefox angepasst werden kann, jedoch wird aufgrund der erheblichen Unterschiede zwischen der Firefox- und der Chrome-Engine die Entwicklung eines ähnlichen Exploits auf die Zukunft verschoben.

Zum Schutz vor Angriffen über den Browser, die mit spekulativer Ausführung von Anweisungen verbunden sind, wurde in Chrome eine Adressraumsegmentierung implementiert – die Sandbox-Isolierung erlaubt es JavaScript, nur mit 32-Bit-Zeigern zu arbeiten und trennt den Speicher der Handler in nicht überlappenden 4-GB-Heaps. Um den Zugriff auf den gesamten Adressraum des Prozesses zu ermöglichen und die 32-Bit-Beschränkung zu umgehen, haben Forscher die Technik ‚Type Confusion‘ eingesetzt, die es ermöglicht, den JavaScript-Motor dazu zu bringen, ein Objekt mit einem falschen Typ zu behandeln, was die Bildung eines 64-Bit-Zeigers aus einer Kombination zweier 32-Bit-Werte erlaubt.

Das Wesen des Angriffs besteht darin, dass bei der Verarbeitung eines speziell gestalteten schädlichen Objekts im JavaScript-Engine Bedingungen geschaffen werden, die zu spekulativer Ausführung von Anweisungen führen, die auf ein Array zugreifen. Das Objekt wird so ausgewählt, dass die vom Angreifer kontrollierten Felder in einem Bereich platziert werden, in dem ein 64-Bit-Zeiger verwendet wird. Da der Typ des schädlichen Objekts nicht dem Typ des verarbeiteten Arrays entspricht, werden solche Aktionen normalerweise in Chrome durch den Deoptimierungsmechanismus blockiert, der für den Zugriff auf Arrays verwendet wird. Um dieses Problem zu lösen, wird der Code für den Type Confusion-Angriff in einen bedingten Block „if“ verschoben, der unter normalen Bedingungen nicht aktiviert wird, jedoch im spekulativen Modus ausgeführt wird, wenn die CPU eine falsche Vorhersage über das weitere Verzweigen trifft.

Der Prozessor greift spekulativ auf den angelegten 64-Bit-Zeiger zu und rollt den Zustand nach Feststellung einer fehlerhaften Vorhersage zurück. Die Ausführungsnachweise verbleiben jedoch im allgemeinen Cache und können durch Methoden zur Ermittlung des Cache-Inhalts über externe Kanäle, die die Zugriffszeiten auf die gecachten und nicht gecachten Daten analysieren, wiederhergestellt werden. Zur Analyse des Cache-Inhalts unter den Bedingungen einer unzureichenden Timer-Genauigkeit, die in JavaScript verfügbar ist, wird die von Google vorgeschlagene Methode verwendet, die die im Prozessor angewandte Cache-Datenverdrängungsstrategie Tree-PLRU überlistet und es ermöglicht, durch Erhöhung der Zyklen die Zeitdifferenz bei Vorhandensein und Nichthandeln eines Wertes im Cache signifikant zu steigern.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster