Прошивку терминала Starlink скачали и проанализировали

jlghy0-5_qy9vftjweaju-je4wu.pngДля прерывания процесса загрузки пользовательского терминала нужно ввести команду «falcon».

Инженер из Бельгии по имени Леннерт Воутерс (Lennert Wouters) сумел скачать и проанализировать прошивку спутникового терминала Starlink. В ходе своих изысканий он сделал несколько интересных наблюдений и обнаружил, что существуют разные версии терминала, включая отдельную версию оборудования для разработчиков, которая защищена флагом геозоны. Даже инженеры SpaceX не везде могут работать в режиме настройки такого оборудования.
Эксперт рассказал, что получил комплект Starlink в конце мая, успел за несколько дней провести начальные исследования оборудования, выгрузить и извлечь прошивку пользовательского терминала системы. Он также добавил, что SpaceX поощряет действия энтузиастов, которые могут найти уязвимости в спутниковом комплекте, открыла доступ к программе багбаунти на портале bugcrowd и дает за обнаруженные программные дыры в прошивке или работе устройств до $25 тыс.

После сборки и настройки комплекта Starlink Воутерс сначала обновил его до последней версии прошивки и провел тестирование скорости. Он получил 268 Мбит при скачивании и 49 Мбит при загрузки в сети.

После проведения штатных проверок и изучения работы и принципов разборки терминала по роликами на YouTube, Воутерс начал операцию по его вскрытия и получению доступа к центральному чипу на базе 4-х ядерного SoC Cortex-A53.

В процессе разборки инженер нашел в корпусе терминала несколько разъемов — для кабеля Ethernet и управления двигателем, а также один дополнительный незадействованный четырехпиновый разъем интерфейса отладки по UART. К нему и подключился Воутерс для проверки механизма загрузки.

mykvjpnfgkk74kf0msagony0jeu.png
Инженер обнаружил, что терминал использует загрузчик U-Boot, а для прерывания процесса загрузки нужно ввести команду «falcon», хотя это не поможет в текущей конфигурации, так как последовательный ввод в терминале настроен на nulldev.

В процессе работы U-Boot загружает ядро, RAM-диск и Flattened Device Tree (FDT) из образа Flattened uImage Tree (FIT), который хранится на встроенной карте памяти MultiMediaCard (eMMC). При загрузке проверяется целостность (с помощью SHA256) и подлинность (по RSA 2048) кода ядра, RAM-диска и FDT. В система реализована полная доверенная цепочка загрузки (TF-A) от начального загрузчика ROM до операционной системы Linux.

5kcjnz8c_gjnyak-jiuohufpjaw.png
kkh0xh6fw8fm4txo3uwef_ubszg.png

Оставшаяся часть процесса загрузки также содержит интересные фрагменты информации. Например, там можно видеть аргументы командной строки ядра, а также начальные адреса и длину некоторых разделов. Кроме того понятно, что SoC содержит 4 ядра.

h8grflni7lmmby5o8v0bgpfx4ge.pngНаконец, когда терминал завершает процесс загрузки, появляется приглашение для входа в систему.

Воутерс сделал несколько попыток угадать заводские учетные данные, но ничего не получилось. Он решил пойти глубже и начал разбирать антенну терминала для получения прямого доступа к центральному чипу и карте памяти устройства.

vydh0hwieljy7390eglmeiixnlu.jpeg
Оказалось, что центральный чип в корпусе с flip-chip BGA с металлической крышкой имеет маркировку ST GLLCCOCA6BF. Он подключен к энергозависимому хранилищу DRAM и энергонезависимому флэш-хранилищу в виде микросхемы eMMC.

Исследователь обнаружил, что встроенная карта памяти eMMC, содержащая флеш-память и контроллер, очень похожа на SD-карту, а ее микросхема Micron eMMC имеет маркировку JY976. Оказалось, что это микросхема MTFC4GACAJCN-1M с 4 ГБ флэш-памяти в корпусе BGA-153.

Воутерс решил не демонтировать чип памяти, что могло бы привести к его повреждению, а попытался сбросить внутрисхемный дамп eMMC.

rzrfu3lbhiux2bdptlu12xhl7ui.jpeg
Инженер смог идентифицировать сигналы CLK, CMD и D0 по 10 контрольным точкам около центрального SoC. Это были линии CMD, CLK и 8 линий данных с чипа памяти.

cx09loyx1p5nenehcgpof8mno5y.pngСигнал CLK был единственным повторяющимся сигналом, CMD — это сигнал, который был первым активным после того, как CLK начал переключаться, а D0 — это первая линия данных для отправки данных. К счастью, определение оставшихся 7 строк данных не нужно для дампа содержимого eMMC.

vvnueg4mhzdifybjy5mw4arclfc.jpegПодключение считывателя к карте памяти терминала.

lhcxbakkfjzz5tluoharkdogrjo.png
Получение данных с карты памяти.

После анализа скачанных данных и изучения модификации U-Boot от SpaceX на Github, Воутерс понял, что некоторые части прошивки хранятся в кастомном формате, который содержит в себе данные кода исправления ошибок (ECC). Исследователь решил убрать эти данные ECC с помощью скрипта Python и смог расшифровать файл spacex_catson_boot.h, в котором содержится информация о процессе загрузки терминала. Также инженер смог прочитать другие файлы системы и даже нашел возможность зайти в систему под root. Оказалось, что для этого нужна другая версия терминала. Текущая пользовательская версия терминала не имеет такой возможности и ее нельзя переделать.

Вдобавок исследователь обнаружил из ссылок в прошивке, что пользовательский терминал содержит защищенный элемент STMicroelectronics STSAFE. Назначение защищенного элемента не совсем понятно. Воутерс предположил, что SpaceX использует его для удаленной аутентификации терминала.

Инженер рассказал, что каждому ядру центрального чипа поставлена своя задача.
############################
# System Information
############################
#
# The user terminal phased-array computers are Catson SoCs with a quad-core
# Cortex-A53.
#
# We dedicate one core to control, while leaving the other three to handle
# interrupts and auxiliary processes.
#
# CPU 0: Control process.
# CPU 1: Lower-MAC RX process.
# CPU 2: Lower-MAC TX process.
# CPU 3: PhyFW and utility core - interrupts, auxiliary processes, miscellaneous

Воутерс подытожил, что он только начал работать с терминалом и продолжит изучать его внутренний код. В его планах рассказывать публично о новых открытиях после проверки всех данных.

9 февраля 2021 года Starlink открыла прием предзаказов на подключение к системе спутникового интернета. Компания принимает те запросы, где сейчас у нее есть разрешения на оказания услуг и технические возможности их предоставить в скорое время.

В января энтузиаст безвозвратно разобрал антенну Starlink и изучил ее элементы под рентгеном.

В начале ноября прошлого года бета-тестеры Starlink показали, как выглядит присланный им комплект оборудования для спутникового интернета.

SpaceX с мая 2019 года выводит на орбиту группы мини-спутников в рамках проекта Starlink. SpaceX собирается обеспечить глобальное покрытие сети спутникового интернета Starlink к сентябрю этого года.

© Habrahabr.ru