iPhone 15: Firmware des USB-C-Controllers in mühevoller Kleinstarbeit ausgelesen
Apple hat sich mit der Einführung von USB-C beim iPhone viel Zeit gelassen. Ein Grund dafür war sicherlich, dass der Anschluss so gut wie möglich gegen unautorisierte Datenverbindungen abgesichert werden sollte. Eine derart gehärtete Technologie weckt den Ehrgeiz passionierter Hardware-Hacker, wie Stacksmashing einer ist. Im Jahr 2024 widmete er einen umfangreichen Teil seiner Zeit und Ressourcen der Analyse des USB-C-Controllers, den Apple im iPhone 15 verbaut hat. Es gelang ihm schließlich, die volle Firmware auszulesen – allerdings erst nach einigen missglückten Versuchen. Davon berichtete er auf dem 38.
Chaos Communication Congress.
Die Kommunikation zwischen System-on-A-Chip (SoC) und USB-C-Anschluss regelt ein dedizierter Chip, den Apple ACE3 nennt. Ein Blick ins Innere des iPhone 15 offenbart, dass es sich dabei um einen undokumentierten Controller von Texas Instruments handelt. Die aufgedruckte Bezeichnung SN25A12 findet nirgends Erwähnung, ist also höchstwahrscheinlich eine Sonderanfertigung für Apple. Der Vorläufer namens ACE2, welchen Apple in vielen MacBook-Modellen verwendet, war ebenfalls ein TI-Controller – dieser wurde lediglich mit einer proprietären Firmware bespielt. Auf Erfahrungen mit diesem Controller konnte Thomas Roth, wie Stacksmashing mit bürgerlichem Namen heißt, aufbauen: Da dieser Chip mit aktiven Debug-Routinen verbaut wurde, war dessen Analyse verhältnismäßig leicht.
M3 Pro und Max verwenden denselben ControllerEssenziell für die Analyse des ACE3-Chips war die Tatsache, dass bestimmte Apple-Laptops mit dem gleichen Chip ausgestattet sind: Die Pro- sowie Max-Varianten des MacBook Pro M3 verwenden denselben Controller, sogar mehrfach. Jeder USB-C-Anschluss ist mit einem SN25A12 ausgestattet. Eine erste Analyse über die Debug-Anschlüsse zeigte deutlich höhere Hindernisse, welche die neue Controllerversion stellt. Der Debug-Modus wurde deaktiviert; die Installation modifizierter Firmware wurde dadurch verhindert, dass jeder Chip personalisierte Patches erforderte. Tatsächlich unterschied sich der Firmware-Inhalt aller vier Chips.
Fault-Injection mit elektromagnetischen PulsenUm mehr herauszufinden, bediente sich Thomas Roth spezialisierter Hardware namens ChipSHOUTER. Diese werden direkt auf einen Mikroprozessor aufgesetzt, um mittels eines elektromagnetischen Pulses Fehler zu erzeugen – sogenannte Glitches. In seltenen Fällen (etwa einmal alle 16 Stunden) gelingt es dabei, einen Firmware-Patch einzuschmuggeln. Auf diese Weise konnte Roth den Controller dazu bringen, ein winziges Fragment (4 Bit) des internen Speichers auszugeben. Dies ließ sich so lange wiederholen, bis der Akku des MacBooks aufgab – häufig deaktiviert ein Glitch nämlich die Ladefunktion. Durch mehrfache Wiederholung dieser umfangreichen Prozedur gelang es ihm schließlich, die gesamte Firmware eines ACE3-Controllers Fragment für Fragment auszulesen.
Zum Auslesen des ACE3-Chips kamen mehrere Spezialwerkzeuge zum Einsatz. (Quelle:
Stacksmashing, media.ccc.de)
Mit Hardware für 60 Euro nachstellbarThomas Roth beziffert den Wert der verwendeten Spezialwerkzeuge in Summe auf etwa 5.000 Euro. Die gesammelten Erfahrungen hat er allerdings so aufbereitet, dass sie mit einem auf den Microcontroller Raspberry Pi Pico basierten Kit namens
ChipSHOUTER PicoEMP für etwa 60 US-Dollar durchführbar ist. Als Software kamen lediglich die Skriptumgebung Python sowie das Analyse-Tool
BinaryNinja zum Einsatz. Vor einem Jahr hielt Stacksmashing bereits auf dem Chaos Communication Congress einen Vortrag über seine USB-C-Diagnoseplatine
Tamarin-C.