
Мод-чип для инжекции сбоев напряжения, предназначенный для black-box оценки безопасности терминалов Starlink; обходит проверку подписи загрузчика, позволяя выполнять произвольную прошивку.
Этот репозиторий сопровождает доклад под названием «Glitched on Earth by Humans: A Black-Box Security Evaluation of the SpaceX Starlink User Terminal». Слайды доступны здесь, запись доклада должна появиться в ближайшее время.
В докладе рассказывается, как нам удалось выполнить произвольный код на пользовательском терминале Starlink с помощью кастомного мод-чипа, который выполняет Voltage Fault Injection (инъекцию сбоя напряжения). Мод-чип можно использовать для обхода проверки подписи при выполнении загрузчика ROM (BL1) System-on-Chip (SoC). Это позволяет выполнять произвольный код на SoC, начиная с BL2, и даёт возможность дальнейшего исследования пользовательского терминала Starlink и сетевой части системы. Мы предоставляем дизайн мод-чипа, чтобы другие исследователи могли продолжить нашу работу.
Несмотря на то, что мы протестировали и используем предоставленную конструкцию мод-чипа, при его использовании возможно нанесение необратимого повреждения пользовательскому терминалу. Кроме того, разборка пользовательского терминала может привести к необратимому повреждению и, скорее всего, лишит вас гарантии.
Мод-чип управляется микроконтроллером RP2040, который срабатывает по линии eMMC D0 и создаёт два импульса с (программируемой) задержкой и смещением для драйвера MOSFET. Один из этих импульсов управляет глитч-MOSFET: когда затвор этого MOSFET переводится в высокое состояние, основное напряжение питания SoC замыкается на землю. Второй импульс, генерируемый RP2040, позволяет управлять двумя MOSFET, которые могут включать/отключать две батареи конденсаторов. Эти конденсаторы необходимы для полной загрузки UT, но батареи конденсаторов нельзя включать во время глитча напряжения, так как это помешало бы получить желаемый сбой.
Схема и gerber-файлы для изготовления собственного мод-чипа предоставлены здесь.


spacex_catson_boot.h.bootdelay.Убедитесь, что собранный вами мод-чип работает, прежде чем пытаться припаять его на место.
Удалите развязывающие конденсаторы внутри красных квадратов — обычно они используются для стабилизации основного напряжения питания SoC.

Выровняйте собранный мод-чип на печатной плате UT и припаяйте его на место, используя отверстия с полуметаллизацией (castellated holes). Следите за тем, чтобы не допустить коротких замыканий между основным напряжением питания и землёй.
Подключите тестовую точку с маркировкой UT RST к выводу enable регулятора основного напряжения.
Подключите тестовую точку с маркировкой 12V к ближайшему источнику 12V на плате UT.
Подключите крайнюю правую перемычку (под кнопкой) к тестовой точке eMMC D0.
Подключите тестовую точку с маркировкой 1V8 к ближайшему источнику 1,8 В на плате UT (рядом с eMMC есть развязывающий конденсатор, подключённый к 1V8).
Теперь всё должно быть готово для начала глитчинга, удачи! Папка Python содержит пример, демонстрирующий, как начать использовать мод-чип для экспериментов.
