
Modchip a iniezione di guasti di tensione per la valutazione di sicurezza black-box dei terminali Starlink, aggirando la verifica della firma del bootloader per eseguire firmware arbitrario.
Questo repository accompagna la presentazione intitolata "Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal". Le slide sono disponibili qui, una registrazione della presentazione dovrebbe essere presto disponibile.
La presentazione spiega come siamo riusciti a eseguire codice arbitrario sul terminale utente Starlink utilizzando un modchip personalizzato che esegue un'iniezione di guasto di tensione. Il modchip può essere utilizzato per bypassare la verifica della firma durante l'esecuzione del bootloader ROM System-on-Chip (SoC) (BL1). Questo consente di eseguire codice arbitrario sul SoC a partire da BL2 e permette di esplorare ulteriormente il terminale utente Starlink e l'aspetto di rete del sistema. Forniamo il design del modchip affinché altri ricercatori possano basarsi sul nostro lavoro.
Anche se abbiamo testato e utilizzato il design del modchip fornito, è possibile causare danni permanenti a un terminale utente usando questo modchip. Allo stesso modo, lo smontaggio del terminale utente può causare danni permanenti e probabilmente annullerà la garanzia.
Il modchip è controllato da un microcontrollore RP2040 che si attiva sulla linea D0 dell'eMMC e crea due impulsi con ritardo e offset (programmabili) per il driver MOSFET. Uno di questi impulsi controlla il MOSFET del glitch: quando il gate di questo MOSFET viene portato a livello alto, l'alimentazione della tensione del core del SoC viene cortocircuitata a massa. Il secondo impulso generato dal RP2040 consente di controllare due MOSFET che possono abilitare/disabilitare due banchi di condensatori. Questi condensatori sono necessari affinché l'UT si avvii completamente, ma i banchi di condensatori non possono essere abilitati durante il glitch di tensione, poiché ciò impedirebbe di ottenere il guasto desiderato.
Lo schema elettrico e i file gerber per produrre il proprio modchip sono forniti qui.


spacex_catson_boot.h.bootdelay.Assicurati che il modchip assemblato funzioni prima di provare a saldarlo in posizione.
Rimuovi i condensatori di disaccoppiamento all'interno dei quadrati rossi; questi sono normalmente usati per stabilizzare l'alimentazione della tensione del core del SoC.

Allinea il modchip assemblato sul PCB dell'UT e saldalo in posizione utilizzando i fori castellati. Assicurati di non creare cortocircuiti tra l'alimentazione del core e la massa.
Collega il punto di test marcato UT RST al pin di enable del regolatore di tensione del core.
Collega il punto di test marcato 12V a una sorgente 12V vicina sul PCB dell'UT.
Collega il pad del jumper all'estrema destra (sotto il pulsante) al punto di test D0 dell'eMMC.
Collega il punto di test marcato 1V8 a una sorgente 1.8V vicina sul PCB dell'UT (c'è un condensatore di disaccoppiamento accanto all'eMMC collegato a 1V8).
Ora dovresti essere a posto per iniziare a fare glitch, buona fortuna! La cartella Python contiene un esempio che dimostra come puoi iniziare a usare il modchip per la sperimentazione.
