
Modchip à injection de fautes de tension pour l'évaluation de sécurité en boîte noire des terminaux Starlink, contournant la vérification de signature du bootloader pour exécuter un firmware arbitraire.
Ce dépôt accompagne la présentation intitulée « Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal ». Un jeu de diapositives est disponible ici, un enregistrement de la présentation devrait bientôt être disponible.
La présentation explique comment nous avons réussi à exécuter du code arbitraire sur le terminal utilisateur Starlink à l'aide d'un modchip personnalisé qui effectue une injection de faute par tension. Le modchip peut être utilisé pour contourner la vérification de signature lors de l'exécution du chargeur de démarrage ROM (BL1) du System-on-Chip (SoC). Cela permet d'exécuter du code arbitraire sur le SoC à partir de BL2 et permet d'explorer davantage le terminal utilisateur Starlink et le côté réseau du système. Nous fournissons la conception du modchip afin que d'autres chercheurs puissent poursuivre nos travaux.
Même si nous avons testé et utilisé la conception du modchip fournie, il est possible de causer des dommages permanents à un terminal utilisateur avec ce modchip. De même, le démontage du terminal utilisateur peut entraîner des dommages permanents et annulera probablement votre garantie.
Le modchip est contrôlé par un microcontrôleur RP2040 qui se déclenche sur la ligne eMMC D0 et crée deux impulsions avec un délai et un décalage (programmables) pour le pilote de MOSFET. L'une de ces impulsions contrôle le MOSFET de glitch ; lorsque la grille de ce MOSFET est portée à l'état haut, l'alimentation en tension du cœur du SoC est court-circuitée à la masse. La deuxième impulsion générée par le RP2040 permet de contrôler deux MOSFET qui peuvent activer/désactiver deux bancs de condensateurs. Ces condensateurs sont nécessaires pour que le terminal UT démarre complètement, mais les bancs de condensateurs ne peuvent pas être activés pendant le glitch de tension, car cela empêcherait d'obtenir la faute souhaitée.
Les schémas et les fichiers Gerber pour fabriquer votre propre modchip sont fournis ici.


spacex_catson_boot.h.Assurez-vous que le modchip que vous avez assemblé fonctionne avant d'essayer de le souder en place.
Retirez les condensateurs de découplage dans les carrés rouges ; ceux-ci servent normalement à stabiliser l'alimentation en tension du cœur du SoC.

Alignez le modchip assemblé sur le PCB de l'UT et soudez-le en place en utilisant les trous crénelés (castellated holes). Veillez à ne créer aucun court-circuit entre l'alimentation en tension du cœur et la masse.
Connectez le point de test marqué UT RST à la broche d'activation du régulateur de tension du cœur.
Connectez le point de test marqué 12V à une source 12V voisine sur le PCB de l'UT.
Connectez le plot de cavalier le plus à droite (sous le bouton) au point de test eMMC D0.
Connectez le point de test marqué 1V8 à une source 1,8 V voisine sur le PCB de l'UT (il y a un condensateur de découplage à côté de l'eMMC qui est connecté au 1V8).
Vous devriez maintenant être prêt à commencer le glitching, bonne chance ! Le dossier Python contient un exemple qui montre comment commencer à utiliser le modchip pour l'expérimentation.

IN A du pilote de MOSFET MCP1405.bootdelay.