
Modchip zur Spannungs-Fehlerinjektion für die Black-Box-Sicherheitsbewertung von Starlink-Terminals, der die Signaturprüfung des Bootloaders umgeht, um beliebige Firmware auszuführen.
Dieses Repository begleitet den Vortrag mit dem Titel "Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal". Die Folien sind hier verfügbar, eine Aufzeichnung des Vortrags sollte bald verfügbar sein.
Der Vortrag beschreibt, wie wir mithilfe eines eigenen Modchips, der Spannungs-Fault-Injection durchführt, beliebigen Code auf dem Starlink-Benutzerterminal ausführen konnten. Der Modchip kann verwendet werden, um die Signaturprüfung während der Ausführung des ROM-Bootloaders (BL1) des System-on-Chip (SoC) zu umgehen. Dies ermöglicht die Ausführung von beliebigem Code auf dem SoC ab BL2 und erlaubt es, das Starlink-Benutzerterminal und die Netzwerkseite des Systems weiter zu untersuchen. Wir stellen das Modchip-Design zur Verfügung, damit andere Forscher auf unserer Arbeit aufbauen können.
Auch wenn wir das bereitgestellte Modchip-Design getestet haben und verwenden, kann die Verwendung dieses Modchips zu dauerhaften Schäden an einem Benutzerterminal führen. Ebenso kann das Zerlegen des Benutzerterminals zu dauerhaften Schäden führen und führt mit hoher Wahrscheinlichkeit zum Verlust Ihrer Garantie.
Der Modchip wird von einem RP2040-Mikrocontroller gesteuert, der auf der eMMC-D0-Leitung auslöst und zwei Impulse mit einem (programmierbaren) Verzögerungs- und Offset-Wert für den MOSFET-Treiber erzeugt. Einer dieser Impulse steuert den Glitch-MOSFET; wenn das Gate dieses MOSFET auf High gelegt wird, wird die Kernspannungsversorgung des SoC mit Masse kurzgeschlossen. Der zweite vom RP2040 erzeugte Impuls steuert zwei MOSFETs, die zwei Kondensatorbänke zu- und abschalten können. Diese Kondensatoren sind erforderlich, damit das UT vollständig booten kann, aber die Kondensatorbänke dürfen während des Spannungs-Glitches nicht aktiviert sein, da dies den gewünschten Fehler verhindern würde.
Der Schaltplan und die Gerber-Dateien zur Herstellung eines eigenen Modchips sind hier verfügbar.


spacex_catson_boot.h dokumentiert.Stellen Sie sicher, dass der von Ihnen zusammengebaute Modchip funktioniert, bevor Sie ihn einlöten.
Entfernen Sie die Entkopplungskondensatoren innerhalb der roten Quadrate. Diese werden normalerweise zur Stabilisierung der SoC-Kernspannungsversorgung verwendet.

Richten Sie den zusammengebauten Modchip auf der UT-Platine aus und löten Sie ihn über die kastellierten Löcher fest. Achten Sie darauf, keinen Kurzschluss zwischen der Kernspannungsversorgung und Masse zu verursachen.
Verbinden Sie den mit UT RST markierten Testpunkt mit dem Enable-Pin des Spannungsreglers für die Kernspannung.
Verbinden Sie den mit 12V markierten Testpunkt mit einer nahegelegenen 12-V-Quelle auf der UT-Platine.
Verbinden Sie die äußerste rechte Jumper-Kontaktfläche (unterhalb des Tasters) mit dem eMMC-D0-Testpunkt.
Verbinden Sie den mit 1V8 markierten Testpunkt mit einer nahegelegenen 1,8-V-Quelle auf der UT-Platine (neben dem eMMC befindet sich ein Entkopplungskondensator, der an 1V8 angeschlossen ist).
Jetzt sollte alles bereit sein, um mit dem Glitching zu beginnen – viel Glück! Der Python-Ordner enthält ein Beispiel, das zeigt, wie Sie den Modchip für Experimente nutzen können.

IN A-Pin des MCP1405-MOSFET-Treibers.bootdelay erhöhen.