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

 
