Как стать автором
Обновить

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

Реверс-инжиниринг *Разработка систем связи *Программирование микроконтроллеров *Сетевое оборудование Будущее здесь
Для прерывания процесса загрузки пользовательского терминала нужно ввести команду "‘falcon".

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

Эксперт рассказал, что получил комплект Starlink в конце мая, успел за несколько дней провести начальные исследования оборудования, выгрузить и извлечь прошивку пользовательского терминала системы. Он также добавил, что SpaceX поощряет действия энтузиастов, которые могут найти уязвимости в спутниковом комплекте, открыла доступ к программе багбаунти на портале bugcrowd и дает за обнаруженные программные дыры в прошивке или работе устройств до $25 тыс.

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

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

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


Инженер обнаружил, что терминал использует загрузчик 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.




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

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

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


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

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

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


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

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

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


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

После анализа скачанных данных и изучения модификации 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 к сентябрю этого года.
Теги: StarlinkпрошивкаПОдебаг
Хабы: Реверс-инжиниринг Разработка систем связи Программирование микроконтроллеров Сетевое оборудование Будущее здесь
Всего голосов 55: ↑55 и ↓0 +55
Комментарии 6
Комментарии Комментарии 6

Похожие публикации

Лучшие публикации за сутки