Содержание статьи
- Получаем ВПО модема
- Удаленный доступ в модем (CVE-2024-39431)
- Закрепляемся в системе
- Lateral movement внутри SoC
- Разрабатываем эксплоит для АР
- Этап 1: ищем базовый адрес ядра Linux
- Этап 2: ищем адрес таблицы kallsyms
- Этап 3: выбираем системный вызов для перехвата
- Этап 4: ищем адрес функции call_usermodehelper
- Этап 5: отключаем SELinux
- Этап 6: ищем область для внедрения кода
- Этап 7: создаем и внедряем шелл-код
- Этап 8: меняем таблицу системных вызовов
- Заключение
Это исследование получило первое место на Pentest Award 2025 в категории «Девайс». Соревнование ежегодно проводится компанией Awillix.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Сегодня все больше устройств подключено к сети напрямую — через сотовый модем, а не через домашний роутер. И все чаще эти модемы интегрируются в однокристальные системы в виде специализированного модемного ядра (CP) под управлением ОС реального времени.
В то же время на другом ядре той же системы на чипе может работать операционная система общего назначения, такая как Android. Это ядро часто называется процессором приложений (AP). При этом тонкости взаимосвязи между AP, CP и оперативной памятью на уровне микроархитектуры известна только производителю, хотя от этого зависит безопасность всей SoC.
Мы привыкли считать, что обход механизмов безопасности в сетях 3G/LTE — это задача скорее академическая. Ведь при подключении между пользователем и базовой станцией сотовой связи устанавливается защищенный канал связи. Даже если кто‑то сможет обойти эти механизмы, обнаружить уязвимость в модеме и выполнить на нем произвольный код, это не должно поставить под угрозу бизнес‑логику устройства. Эта логика (например, пользовательские приложения, история браузера, звонки и SMS на смартфоне) работает на АР и предположительно не может быть доступна с модема. Или может?
Чтобы выяснить это, мы провели исследование безопасности современной системы на чипе Unisoc UIS7862A, оснащенной встроенным 2G/3G/4G-модемом. Например, такие SoC можно встретить в мобильных устройствах или, что более интересно, в головных устройствах современных автомобилей, уверенно захватывающих рынок РФ. Безопасность головного устройства автомобиля — это безопасность не только данных, но и дорожного движения.
Мы обнаружили несколько критических уязвимостей на разных уровнях стека сотовых протоколов модема Unisoc UIS7862A. Сегодня речь пойдет о самой интересной из них, а именно — переполнении стека в реализации протокола 3G RLC (CVE-2024-39432), которая может быть использована для удаленного выполнения кода на ранних этапах подключения до активации каких‑либо защитных механизмов.
При этом выполнение кода на модеме — лишь точка входа, первый шаг к полной удаленной компрометации всей SoC. На пути к этоу мы нашли сразу несколько способов получить доступ к AP, в том числе аппаратную уязвимость в виде скрытого периферийного устройства DMA.
В итоге мы смогли пропатчить ядро Android прямо во время работы и в результате выполнить произвольный код с наивысшими привилегиями в системе.
Получаем ВПО модема
Модем мы обнаружили на плате головного устройства одного автомобиля. Давай посмотрим, что там есть еще.

В соответствии с номерами на фото:
- Realtek RTL8761ATV 802.11b/g/n 2.4G single-chip that integrates Wireless LAN (WLAN) and a network USB interface (USB 1.0/1.1/2.0 compatible) controller.
- SPRD UMW2652 BGA WiFi.
- 55966 TYADZ 21086.
- SPRD SR3595D RF Transceiver Spreadtrum (Unisoc).
- Techpoint TP9950 Video Decoder Chip.
- UNISOC UIS7862A.
- BIWIN BWSRGX32H2A-48G-X, Package 200-FBGA, ROM Type — Discrete, ROM Size — LPDDR4X, 48G.
- SCY E128CYNT2ABE00 EMMC 128G/JEDEC.
- SPREADTRUM UMP510G5 Power Management Ic.
- FEI.1s LE330315 USB2.0 Shunt chip IC.
- SCT SCT2432STER Synchronous Step-down DCDC Converter with Internal Compensation.
Опираясь на известные данные о конструкции модема, мы выпаяли и считали его чип памяти eMMC, получив полный образ операционной системы. После этого занялись анализом образа.
Удаленный доступ в модем (CVE-2024-39431)
Как любой современный модем, наш включал в себя реализацию сразу нескольких стеков протоколов: 2G, 3G, LTE. А как известно, чем больше протоколов реализует устройство, тем больше потенциальных точек входа, то есть векторов атаки. И чем ниже в стеке модели OSI находится уязвимость, тем серьезнее последствия ее эксплуатации. Поэтому мы решили проанализировать механизмы фрагментации пакетов данных на уровне доступа к среде передачи (протокол RLC).
Чем нас заинтересовал именно этот протокол? Все дело в том, что именно он используется для установки безопасного зашифрованного канала передачи данных между базовой станцией (БС) и модемом (по нему, в частности, «бегает» NAS). Таким образом, наличие уязвимости типа RCE в нем позволит получить безусловное исполнение своего кода на модеме в обход всех механизмов защиты коммуникации в 3G.

В протоколе RLC используются три режима передачи: TM, UM и AM. При этом нас сейчас будет интересовать только один из них, а именно режим UM — unacknowledged mode. В стандарте 3G предусмотрена разбивка данных на фрагменты и наоборот — объединение нескольких небольших фрагментов высокоуровневых данных (PDU) в один фрейм канального уровня.

Сделано это из соображений максимальной утилизации канала передачи. На уровне RLC пакеты называются SDU.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
