
Modchip de inyección de fallos de voltaje para la evaluación de seguridad de caja negra de terminales Starlink, que elude la verificación de firma del bootloader para ejecutar firmware arbitrario.
Este repositorio acompaña a la charla titulada "Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal". Las diapositivas están disponibles aquí; la grabación de la charla debería estar disponible pronto.
La charla explica cómo logramos ejecutar código arbitrario en el terminal de usuario Starlink mediante un modchip personalizado que realiza inyección de fallos por voltaje. El modchip puede usarse para omitir la verificación de firmas durante la ejecución del cargador de arranque ROM (BL1) del System-on-Chip (SoC). Esto permite ejecutar código arbitrario en el SoC desde BL2 en adelante y permite explorar más a fondo el terminal de usuario Starlink y el aspecto de red del sistema. Proporcionamos el diseño del modchip para que otros investigadores puedan basarse en nuestro trabajo.
Aunque hemos probado y utilizado el diseño del modchip proporcionado, es posible causar daños permanentes a un terminal de usuario usando este modchip. Asimismo, desmontar el terminal de usuario puede causar daños permanentes y probablemente anulará tu garantía.
El modchip está controlado por un microcontrolador RP2040 que se dispara con la línea D0 de la eMMC y genera dos pulsos con un retardo y desplazamiento (programables) para el controlador de MOSFET. Uno de estos pulsos controla el MOSFET de glitch; cuando la puerta de este MOSFET se pone en alto, el suministro de voltaje del núcleo del SoC se cortocircuita a tierra. El segundo pulso generado por el RP2040 permite controlar dos MOSFET que pueden habilitar/deshabilitar dos bancos de condensadores. Estos condensadores son necesarios para que el UT arranque por completo, pero los bancos de condensadores no pueden habilitarse durante el glitch de voltaje, ya que esto impediría obtener la falla deseada.
El esquemático y los gerbers para fabricar tu propio modchip se proporcionan aquí.


spacex_catson_boot.h.bootdelay.Asegúrate de que el modchip que has montado funciona antes de intentar soldarlo en su sitio.
Retira los condensadores de desacoplo dentro de los cuadrados rojos; normalmente se usan para estabilizar el suministro de voltaje del núcleo del SoC.

Alinea el modchip montado sobre la PCB del UT y suéldalo en su lugar usando los agujeros castellanados. Asegúrate de no crear cortocircuitos entre el suministro de voltaje del núcleo y tierra.
Conecta el punto de prueba marcado UT RST al pin de habilitación del regulador de voltaje del núcleo.
Conecta el punto de prueba marcado 12V a una fuente de 12V cercana en la PCB del UT.
Conecta la almohadilla de puente (jumper) de más a la derecha (debajo del botón) al punto de prueba D0 de la eMMC.
Conecta el punto de prueba marcado 1V8 a una fuente de 1.8V cercana en la PCB del UT (hay un condensador de desacoplo junto a la eMMC que está conectado a 1V8).
Con esto deberías estar listo para empezar a hacer glitching, ¡buena suerte! La carpeta Python contiene un ejemplo que demuestra cómo puedes empezar a usar el modchip para experimentar.
