iLeakage: Browserbasierter, timerloser Speculative-Execution-Angriff auf Apple-Geräte
(ileakage.com)- Obwohl Spectre-Abwehrmaßnahmen seit rund sechs Jahren bestehen, zeigt iLeakage, dass sich Side Channels durch speculative execution in Safari auf Mac, iPad und iPhone weiterhin ausnutzen lassen
- Angreifer können Nutzer dazu bringen, eine bösartige Webseite zu besuchen und anzuklicken, und Safari anschließend mit JavaScript und WebAssembly dazu veranlassen, beliebige Webseiten zu rendern, um sensible Informationen wiederherzustellen
- Die Demonstrationen umfassen die Betreffzeilen aktueller Gmail-Nachrichten, automatisch ausgefüllte Instagram-Zugangsdaten, den YouTube-Wiedergabeverlauf sowie die Wiederherstellung eines Facebook-Passworts und eines SMS-2FA-Tokens auf einem MacBook Pro mit Apple M3
- Betroffen sind macOS- und iOS-Geräte mit Apple-A-Series- und M-Series-CPUs; die Schwachstelle wurde in iOS 17.2 und macOS 14.2 mit Safari 17.2 entschärft
- Lockdown Mode oder das Deaktivieren von JavaScript können den Angriff ebenfalls verhindern, schränken aber Funktionen ein; da der Angriff innerhalb von Safari läuft und keine Spuren in Systemlogs hinterlässt, ist er sehr schwer zu erkennen
Spectre-Risiko auf Apple-Geräten erneut sichtbar
- iLeakage ist ein Side-Channel-Angriff durch speculative execution auf den Safari-Webbrowser
- Ziel sind macOS- und iOS-Geräte mit Apples A-Series- oder M-Series-CPUs
- Dazu gehören aktuelle iPhones und iPads
- Ebenso Apple-Notebooks und -Desktops seit 2020
- Eigentlich sollte Code in einem Browser-Tab den Inhalt anderer Tabs nicht erschließen können; iLeakage kann jedoch Inhalte einer Zielwebseite auslesen, wenn Nutzer die Angreiferseite besuchen und anklicken
- Wiederherstellbare Informationen können personenbezogene Daten, Passwörter und Kreditkarteninformationen umfassen
- Die Forschenden legten ihre Ergebnisse Apple am 12. September 2022 offen, 408 Tage vor der öffentlichen Veröffentlichung
Tatsächlich wiederhergestellte sensible Daten
- Die Forschenden demonstrierten die Wiederherstellung von hochwertigen Informationen aus populären Diensten
-
Instagram-Zugangsdaten
- Verwendet wurde ein Szenario in macOS Safari, in dem sich ein Nutzer mit dem Autofill-Credential-Manager von LastPass bei Instagram anmeldet
-
Gmail-Posteingang
- Unter der Annahme, dass der Nutzer in iOS Safari bei Google angemeldet ist, wurden auf einem iPad die Betreffzeilen aktueller Nachrichten eines Gmail-Kontos wiederhergestellt
-
YouTube-Wiedergabeverlauf
- Der YouTube-Wiedergabeverlauf wurde in Chrome für iOS wiederhergestellt
- Chrome für iOS funktioniert aufgrund der Apple-App-Store-Richtlinien als Shell über der Safari-Browsing-Engine
-
Facebook-Passwort und 2FA-Token
- In einer Umgebung mit einem MacBook Pro mit Apple-M3-Chip, macOS 14.1.1 und Safari 17.1 wurde zunächst das Facebook-Passwort wiederhergestellt
- Anschließend wurde über Google Messages der per SMS an ein Android-Smartphone gesendete 2FA-Token wiederhergestellt
Funktionsweise von Spectre und Side Channels
- Die meisten modernen CPUs nutzen speculative execution: Wenn das Ergebnis einer Verzweigung nicht sofort feststeht, sagen sie den Ausführungspfad voraus und verarbeiten die Befehle dieses Pfads vorab
- Ist die Vorhersage falsch, macht die CPU Zustandsänderungen rückgängig; in mikroarchitektonischen Zuständen wie dem Cache können jedoch Spuren zurückbleiben
- Spectre ist eine Hardware-Schwachstelle, die diese Spuren ausnutzt, um Daten zu lesen, auf die gemäß der ursprünglichen Programmlogik nicht zugegriffen werden dürfte
- Side Channels können Eigenschaften der Systemimplementierung ausnutzen, selbst wenn ein Programm einen sicheren Algorithmus ausführt
- Beispiele sind Schall, elektromagnetische Abstrahlung, Thermal Throttling und die gemeinsame Nutzung mikroarchitektonischer CPU-Ressourcen
- Wenn Angreifer und Ziel auf derselben CPU laufen, teilen sie sich Ressourcen wie Kerne, Caches und interne Puffer; diese Konkurrenz kann indirekt über Variablen wie Timing oder Stromverbrauch gemessen werden
Timerlose Angriffskonstruktion zur Umgehung der Safari-Abwehr
- Browseranbieter haben seit Spectre ihre Abwehr gegen speculative-execution- und transient-execution-Angriffe verstärkt
- Zu Safaris Abwehrmaßnahmen gehören 35-bit addressing, value poisoning, eine Prozessisolierungsrichtlinie pro Tab und Timer mit niedriger Auflösung
- iLeakage ist die erste Demonstration eines Speculative-Execution-Angriffs gegen Apple-Silicon-CPUs und Safari
- Der Angriff beginnt mit der empirischen Rekonstruktion der nicht öffentlich dokumentierten Cache-Konfiguration von Apple-CPUs
- Anschließend wird ein auf speculation basierendes Gadget gebaut, das Cache-Hits und -Misses auch nur mit Timern niedriger Auflösung unterscheiden kann
- Auch eine Variante, die ohne Timer eine Race Condition nutzt, wurde demonstriert
- Dieses Gadget wird sowohl für Tests zur Erzeugung von eviction sets als auch für den covert channel verwendet
- Nach der Übertragung der Technik auf Safari wird Safari dazu gebracht, während speculative execution durch die CPU Code für bestimmte Datentypen auf vom Angreifer erzeugten Objekten falschen Typs auszuführen
- Am Ende wird ein out-of-bounds read an beliebiger Stelle im Adressraum des Safari-Rendering-Prozesses möglich
- Kombiniert mit einer neuen Methode, Websites verschiedener Domains im selben Adressraum zusammenzuführen, führt dies zu einem speculative type confusion-Angriff, der sensible Informationen preisgibt
Abhilfen, Erkennungsschwierigkeit und Auswirkungen je Browser
- iLeakage wurde in Safari 17.2 entschärft; Safari 17.2 ist in iOS 17.2 und macOS 14.2 enthalten
- Die Gegenmaßnahme besteht darin, Apple-Geräte auf die aktuelle OS-Version zu aktualisieren
- Lockdown Mode entschärft iLeakage, indem er Safaris JIT-Kompilierung deaktiviert
- JIT-Kompilierung ist eine Performance-Funktion, die iLeakage zum Aufbau der Angriffsprimitive nutzt
- Lockdown Mode kann das Geräteverhalten ändern, etwa indem bestimmte Nachrichtenanhänge und FaceTime-Anrufe von unbekannten Personen blockiert werden
- Die vollständige Liste steht in Apples Lockdown-Mode-Dokumentation
- Auch das Deaktivieren von JavaScript verhindert iLeakage, kann aber dazu führen, dass Safari manche Websites fehlerhaft oder unvollständig rendert und fortgeschrittene Webfunktionen wie Online-Zahlungen nicht funktionieren
- iLeakage läuft innerhalb von Safari und hinterlässt keine Spuren in Systemlogdateien, weshalb die Erkennung sehr schwierig ist
- Spuren des Besuchs der Angreifer-Webseite können jedoch im Browser-Cache der zuletzt besuchten Seiten verbleiben
- Es gibt keine Belege für eine Ausnutzung in der Praxis
- Der End-to-End-Angriffsaufbau ist sehr schwierig und erfordert fortgeschrittenes Wissen über browserbasierte Side-Channel-Angriffe und die Safari-Implementierung
- Die weitere Nutzung von Credential-Managern wird empfohlen
- iLeakage kann automatisch in Webseiten eingetragene Zugangsdaten wiederherstellen
- Viele Plattformen verlangen eine Nutzerinteraktion, damit Autofill erfolgt
- Chrome, Firefox und Microsoft Edge unter macOS verwenden andere JavaScript-Engines; daher funktioniert iLeakage dort nicht, weil es Besonderheiten der Safari-JavaScript-Engine ausnutzt
- Unter iOS verwenden aufgrund der Apple-App-Store- und Sandboxing-Richtlinien auch andere Browser-Apps die Safari-JavaScript-Engine
- Chrome, Firefox und Edge für iOS sind Wrapper über Safari, die Zusatzfunktionen wie das Synchronisieren von Lesezeichen und Einstellungen bieten
- Fast alle Browser-Anwendungen im App Store sind für iLeakage anfällig
- Das wissenschaftliche Paper ist als iLeakage paper verfügbar und wurde auf der 2023 ACM Conference on Computer and Communications Security veröffentlicht
1 Kommentare
Meinungen auf Hacker News
In dieser FAQ scheint etwas zu fehlen: Ich frage mich, ob das eine WebKit-Schwachstelle oder eine Safari-Schwachstelle ist, ob das Aktivieren des Lockdown Mode sie abmildert, da es in Mobile Safari diese Entwicklereinstellung nicht gibt, und wann Apple informiert wurde.
Später wurde die Seite aktualisiert und die letzte Frage beantwortet: Die Forschenden haben Apple die Ergebnisse am 12. September 2022 offengelegt, 408 Tage vor der öffentlichen Veröffentlichung.
Es ist unrealistisch, in WebKit alle möglichen Spectre-Gadgets zu entfernen; deshalb müssen Browser die Spectre-Mitigationen des Betriebssystems nutzen, etwa indem sie verschiedene Websites in unterschiedliche Prozesse isolieren.
Da in der FAQ steht, dass man „letztlich ein Out-of-Bounds-Read an beliebiger Stelle im Adressraum des Safari-Rendering-Prozesses erreicht“, würde ich persönlich es als Schwachstelle in der fehlerhaften Implementierung der Site-Isolation von Safari sehen.
In welchen Umgebungen sie ausnutzbar ist, hängt von den Implementierungsdetails der JavaScript-basierten Gadgets ab, die diesen Seitenkanal auslösen und messen; das könnte in dem Paper stehen, das ich noch nicht gelesen habe.
Der Lockdown Mode wirkt als Mitigation, weil er in Safari die JIT-Kompilierung deaktiviert und damit die Performance-Funktionen blockiert, die iLeakage zum Erzeugen der Angriffsprimitive verwendet.
Auf die Frage „Ist es riskant, einen Credential Manager zu verwenden?“ antworten die meisten mit Nein, aber wenn aus dem Speicher etwas durchsickert, müsste das dann nicht den gesamten Speicher im Safari-Prozessraum betreffen?
Ich kenne mich in diesem Bereich nicht gut aus und verstehe nicht ganz, warum die Nutzung eines Credential Managers eine Ausnahmebedingung sein soll.
Sie wollen offenbar vermeiden, dass Leute wieder zu Dingen wie „newpassword2“ zurückkehren; sicherer ist es, AutoFill zu deaktivieren und die Felder per Tastenkürzel oder einer anderen Benutzerinteraktion auszufüllen.
Man könnte das so lesen, dass man immun ist, wenn man keinen Passwortmanager nutzt, nichts im Browser speichert und jedes Mal alles manuell eingibt, aber das ist aus mehreren Gründen kein gutes Gegenargument.
Passwortmanager sind aus vielen anderen Gründen nützlich, und selbst wenn ein Passwort gestohlen wird, ist zumindest nur eine Website kompromittiert.
Diese Technik kann vermutlich auch Session-Tokens stehlen; das ist zwar nicht ganz dasselbe wie Passwortdiebstahl, aber immer noch schlecht.
Wenn man den Passwortmanager so konfiguriert, dass er erst nach einem Klick ausfüllt, lässt sich auch dieser Angriff verhindern.
Ein automatisch in eine Seite eingefügtes Passwort kann wie ein manuell eingegebenes Passwort wiederhergestellt werden, aber alle im Passwortmanager gespeicherten Passwörter lassen sich nicht direkt auslesen.
window.open-Aufruf geöffnet wurden.Passwörter, die in einer separaten Passwortmanager-App gespeichert sind, sind nicht zugänglich, solange diese App sie nicht automatisch in ein kompromittiertes Safari-Fenster oder einen kompromittierten Prozess einfügt.
Dieser Angriff hat einen Weg gefunden, zwei verschiedene Origins dazu zu bringen, denselben Adressraum zu teilen; auf Erweiterungen scheint er nicht anwendbar zu sein.
Im Paper heißt es: „Wir zeigen eine neue Technik, die Safaris Site-Isolation-Richtlinie ausnutzt, sodass eine Angreiferseite nur über die JavaScript-API
window.openeine beliebige Opferseite öffnen muss, damit beide den Adressraum teilen.“Ich bin unsicher, ob das Framing als WebKit-spezifisch wirklich stimmt. Die Cache-Ausnutzung selbst wirkt allgemein, und im Zitat heißt es, man habe in Safari, Firefox und Tor nahezu perfekte Genauigkeit erzielt.
Außerdem frage ich mich, ob der Angriff über
window.open()wirklich WebKit-spezifisch ist oder ob diese Studie WebKit nur besonders gründlich untersucht hat.window.open()deutet einen gemeinsamen Kontext an: Das aufrufende Fenster erhält eine Referenz auf das neue Fenster, und das neue Fenster hat überwindow.openereine Rückreferenz. Da frage ich mich, ob andere Browser-Engines wirklich vollständige Isolation erreichen.In mobilen Browsern ist Chromiums Site-Isolation eingeschränkt, und Firefox hat die Implementierung noch nicht abgeschlossen.
https://www.chromium.org/Home/chromium-security/site-isolati...
Verwirrend. Das sieht nach einem Problem mit hoher Schwere aus, aber der Fix steckt hinter einem Debug-Menü. Ich verstehe nicht, warum das veröffentlicht wurde, bevor es ordentlich überall ausgerollt wurde.
Außerdem zeigt es, dass Side-Channel-Abhilfen praktisch nutzlos sind und man nicht so tun sollte, als seien solche Angriffe behoben.
Auf einem Host, der auf modernen CPUs mehrere Anwendungen ausführt, ist es nicht sicher, nicht vertrauenswürdigen Code auszuführen, egal wie stark man ihn sandboxt.
Es ist meiner Meinung nach viel besser, die Risiken bekannt zu machen, als Apple-Nutzer noch ein weiteres Jahr oder länger unwissend gefährdet zu lassen.
Ich bin dafür, Unternehmen Zeit zu geben, Bugs zu beheben, aber ab einem gewissen Punkt ist es unverantwortlicher, die Betroffenen nicht zu informieren.
Das Paper erklärt, dass ein spekulativer Ausbruch aus der JavaScript-Sandbox weiterhin möglich ist, der Angreifer aber auf seinen eigenen Adressraum und das Lesen seiner eigenen Daten beschränkt wird.
Zum Zeitpunkt der Erstellung sei Apples Patch öffentlich und in Safari Technology Preview 173 oder höher implementiert gewesen; [57] ist https://github.com/WebKit/WebKit/pull/10169.
Darunter verlinkt ein Engineer weitere Hardening-Patches zu
window.open()und Prozessisolierung.Swap Processes on Cross-Site Window Openbereits aktiviert und als Stable markiert.Ich hatte es nicht selbst eingeschaltet und dachte daher, Apple habe es vielleicht schon aktiviert und die Beschreibung sei veraltet; später stellte sich aber heraus, dass ich auf das ähnlich benannte
Swap Processes on Cross-Site Navigationgeschaut hatte, und derzeit scheint es standardmäßig nicht aktiviert zu sein.Man sollte eher Apple dafür verantwortlich machen, so lange untätig gewesen zu sein, als die Forschenden, die es vor der Auslieferung des Fixes veröffentlicht haben.
Nicht alle Side-Channel-Angriffe sind behoben, aber zu sagen, Side-Channel-Abhilfen seien nutzlos, ist unangemessen.
Auch mit Sicherheitsgurt sterben Menschen bei Autounfällen, aber das macht Sicherheitsgurte nicht nutzlos; Mitigationen erhöhen den Aufwand für die Ausnutzung erheblich.
Es heißt: „Die Forschenden haben Apple die Ergebnisse am 12. September 2022 offengelegt“ – ich frage mich wirklich, warum Apple das über ein Jahr fast liegen gelassen hat.
Apple ist einer der CVE-Machtakteure und kann die Vergabe von CVEs für die eigenen Produkte verweigern; mit dieser Macht kann man sich so viel Zeit lassen, wie man will.
Ich meine, auf der iLeakage-Website einen Hinweis zum Fix gesehen zu haben, aber er ist verschwunden. Ich dachte erst, ich hätte mich getäuscht, aber die Website wurde tatsächlich innerhalb der letzten Stunde geändert.
Dort stand sinngemäß: „Apple hat gerade iOS 17.1, iPadOS 17.1 und macOS Sonoma 14.1 veröffentlicht, also aktualisiert eure Geräte“, und jetzt wurde das zurückgenommen.
https://github.com/ileakage-authors/ileakage-authors.github....
Nachdem ich darauf hingewiesen hatte, dass es auf der Website keinen Offenlegungszeitplan gibt, wurde der FAQ ein kurzer Abschnitt hinzugefügt; da der Stand der Fix-Auslieferung verwirrend ist, scheinen nun auch die Forschenden mitverwirrt zu sein.
Swap Processes on Cross-Site Navigation, und es ist standardmäßig aktiviert.Ich frage mich, ob das etwas anderes ist als
Swap Processes on Cross-Site Window Openunter macOS.Die Formulierung „iLeakage ist ein Angriff, der bis zum Ende ziemlich schwer auszuführen ist und fortgeschrittenes Wissen über browserbasierte Side-Channel-Angriffe und die Safari-Implementierung erfordert“ könnte der Grund sein, warum Apple sich nicht besonders darum kümmert.
Noch ein gruseliger Spitzname samt Domainname wirkt weder professionell noch vertrauenswürdig.
Wenn macOS- oder iOS-Geräte mit Apple-A- oder M-Series-CPU betroffen sind, also aktuelle iPhones/iPads sowie Apple-Laptops und -Desktops seit 2020, dann bin ich als seltener Intel-Mac-Nutzer wohl nicht betroffen.
Die Cache-Hierarchie ist nur etwas anders, und der Proof of Concept bräuchte vermutlich kleinere Änderungen.
Unter iOS muss man den Lockdown Mode nutzen; das ist die einzige Möglichkeit, ein iPhone sicher zu verwenden.
Benchmarks ohne Lockdown Mode sollte man als genauso nutzlos betrachten wie CPU-Benchmarks mit
mitigations=off.Ein weiterer guter Grund, auf iOS-Geräten andere Browser-Engines zuzulassen.
Wenn beim Ausführen des folgenden Befehls ein Fehler auftritt, erteile dem Terminal Full Disk Access und versuche es erneut.
defaults write com.apple.SafariTechnologyPreview IncludeInternalDebugMenu 1