Angriffskette von 'Operation Triangulation'
- Eine bösartige iMessage-Anlage wird gesendet und ohne Wissen des Nutzers in der Anwendung verarbeitet.
- Diese Anlage nutzt die Remote-Code-Execution-Schwachstelle CVE-2023-41990 in undokumentierten, Apple-spezifischen ADJUST-TrueType-Font-Befehlen aus.
- Mithilfe mehrstufiger Return-/Jump-Oriented Programming sowie der in NSExpression/NSPredicate geschriebenen Abfragesprache wird die Umgebung der JavaScriptCore-Bibliothek gepatcht und ein in JavaScript geschriebener Privilege-Escalation-Exploit ausgeführt.
- Der JavaScript-Exploit ist so stark obfuskiert, dass er praktisch unlesbar ist, und zugleich auf minimale Größe optimiert. Rund 11.000 Zeilen Code sind hauptsächlich dem Parsen und Manipulieren von JavaScriptCore- und Kernel-Speicher gewidmet.
- Unter Verwendung der Debugging-Funktion DollarVM($vm) von JavaScriptCore wird die Fähigkeit erlangt, aus dem Skript heraus den Speicher von JavaScriptCore zu manipulieren und native API-Funktionen auszuführen.
- Er wurde so entworfen, dass sowohl ältere als auch neuere iPhones unterstützt werden, einschließlich eines Pointer-Authentication-Code-(PAC)-Bypasses zur Ausnutzung von Schwachstellen auf den neuesten Modellen.
- Durch Ausnutzung der Integer-Overflow-Schwachstelle CVE-2023-32434 in den XNU-Systemaufrufen zur Speicherzuordnung (mach_make_memory_entry und vm_map) wird auf Benutzerebene Lese-/Schreibzugriff auf den gesamten physischen Speicher des Geräts erlangt.
- Mithilfe von Hardware-Registern für Memory-Mapped I/O (MMIO) wird die Page Protection Layer (PPL) umgangen. Dies wurde durch CVE-2023-38606 entschärft.
- Nach Ausnutzung aller Schwachstellen kann der JavaScript-Exploit beliebige Aktionen auf dem Gerät ausführen. Statt direkt Spyware zu starten, injiziert er eine Payload, die den IMAgent-Prozess startet und Exploit-Spuren auf dem Gerät löscht, oder startet den Safari-Prozess in einem unsichtbaren Modus, um zu einer Webseite mit der nächsten Stufe weiterzuleiten.
- Die Webseite enthält ein Skript zur Identifizierung des Opfers; besteht es die Prüfung, wird der Safari-Exploit der nächsten Stufe ausgeliefert.
- Der Safari-Exploit verwendet CVE-2023-32435 zur Ausführung von Shellcode.
- Der Shellcode führt einen weiteren Kernel-Exploit in Form einer Mach-Objektdatei aus. Dieser nutzt dieselben Schwachstellen wie CVE-2023-32434 und CVE-2023-38606. Er ist in Umfang und Funktionalität gewaltig, aber vollständig anders als der in JavaScript geschriebene Kernel-Exploit. Zwar teilen beide Exploits relevante Teile, der Großteil des Codes ist jedoch dem Parsen und Manipulieren von Kernel-Speicher gewidmet. Er enthält verschiedene Post-Exploitation-Utilities, von denen die meisten jedoch nicht verwendet werden.
- Der Exploit erlangt Root-Rechte und führt weitere Stufen aus, um Spyware zu laden.
Das Rätsel und die Schwachstelle CVE-2023-38606
- Neuere iPhone-Modelle verfügen über zusätzliche hardwarebasierte Sicherheitsmechanismen zum Schutz sensibler Bereiche des Kernel-Speichers.
- Diese Schutzfunktion soll verhindern, dass Angreifer ein Gerät vollständig kontrollieren können, selbst wenn sie Kernel-Speicher lesen und schreiben können.
- Die Angreifer umgehen diesen hardwarebasierten Schutz mithilfe einer weiteren Hardware-Funktion im von Apple entworfenen SoC.
- Sie umgehen den hardwarebasierten Speicherschutz, indem sie Daten, Zieladresse und einen Daten-Hash in unbekannte Hardware-Register eines vom Firmware-Code nicht genutzten Chips schreiben.
- Es wird vermutet, dass diese unbekannte Hardware-Funktion entweder für Debugging- oder Testzwecke durch Apple-Ingenieure oder in der Fabrik gedacht war oder versehentlich enthalten blieb.
Technische Details
- Verschiedene Peripherieeinheiten im SoC stellen spezielle Hardware-Register bereit, die die CPU zur Steuerung dieser Geräte verwenden kann.
- Diese Hardware-Register sind in für die CPU zugänglichen Speicher eingeblendet und als „Memory-Mapped I/O (MMIO)“ bekannt.
- Die MMIO-Adressbereiche der Peripherie in Apple-Produkten (iPhone, Mac usw.) sind in einem speziellen Dateiformat namens DeviceTree gespeichert.
- Der Großteil des im Angriff verwendeten MMIO gehört zu keinem im DeviceTree definierten MMIO-Bereich.
- Es ist unklar, wie die Angreifer MMIO ermittelt haben, das von der Firmware nicht verwendet wird, und zu welcher Peripherie diese MMIO-Adressen gehören.
- Es wurde bestätigt, dass diese MMIO-Register zu einem GPU-Coprozessor gehören.
- Die Angreifer verwendeten diese MMIO-Register, um die Page Protection Layer (PPL) zu umgehen und Page-Table-Einträge zu patchen.
- Die Methode zur Hash-Berechnung ermöglicht es der im Angriff verwendeten Hardware-Funktion, per Direct Memory Access (DMA) Daten an die angeforderte Stelle zu schreiben.
Meinung von GN⁺
- Diese Untersuchung legt eine äußerst ausgeklügelte Angriffskette gegen iPhones offen. Für Sicherheitsforscher ist das eine sehr wichtige Entdeckung, die zur Verbesserung der Sicherheit von Apple-Produkten beitragen kann.
- Wie die Angreifer auf die von der Firmware ungenutzte Hardware-Funktion gestoßen sind, bleibt weiterhin ein Rätsel. Das unterstreicht die Bedeutung der Forschung im Bereich Hardware-Sicherheit.
- Der Artikel bietet sehr interessante Inhalte für alle, die sich für Software- und Hardware-Sicherheit interessieren. Die hochkomplexen Angriffsmethoden und ihre Analyse zeigen die Tiefe und Notwendigkeit der Sicherheitsforschung.
1 Kommentare
Hacker-News-Kommentar
Erstaunliches am Missbrauch von MMIO
Twitter-Zusammenfassung von Steve Weis
Erklärung zu Coresight
gdboder andere Tools haben, die das nutzen können.Spekulation zur Auffindbarkeit von MMIO-Registern
Zweifel am Einsatz eines Daten-Hashs in Chip-Debug-Funktionen
Beobachtung zu den Eigenschaften des Hash-Algorithmus
Bewunderung für den Aufwand der Angreifer
Erklärung der von den Angreifern genutzten Funktion
Bedeutung neu entdeckter Schwachstellen