
Технический разбор CVE-2024-20154 — переполнения буфера в стеке в прошивке baseband NB-IoT MediaTek MT6769, включая реверс-инжиниринг и цепочку эксплуатации.
Классификация: CWE-121 — переполнение буфера в стеке
Критичность: Критическая (бюллетень MediaTek) · 8.8 Высокая, вектор атаки: смежный (CISA-ADP)
Тип: удалённое выполнение кода — без взаимодействия с пользователем, без предварительной ассоциации
Раскрытие: бюллетень безопасности MediaTek, 6 января 2025 г. https://corp.mediatek.com/product-security-bulletin/January-2025
Проанализированная цель: Samsung Galaxy A14 SM-A145R — семейство MT6769 (Helio G80), входящее в список затронутых чипсетов MediaTek — прошивка эмулировалась в безопасных условиях.
Статус: исправлено.
Это было моё первое опубликованное исследование базовой станции. Я пришёл из области, далёкой от телекоммуникационной инфраструктуры, промежуточных слоёв законного перехвата, анализа stingray и IMSI-ловушек, а также безопасности встраиваемых устройств — я ранее не занимался глубоким реверс-инжинирингом прошивок сотовых модемов. Я хотел доказать себе, что структурированная аналитическая методология адаптируется к разным целям, а знакомство с конкретной платформой можно заменить строгим прослеживанием цепочек. NB-IoT выделялся тем, что находится на действительно опасном пересечении: протокол разработан для ограниченных IoT-устройств, поверхность атаки — до ассоциации, и стек модема обрабатывает его независимо от того, что делает пользователь аппарата.
Когда прошивка с исправлением была проанализирована и уязвимый шаблон подтверждён как отсутствующий, система ИИ, использовавшаяся для массового анализа прошивки перед нацеливанием на конкретные функции,
независимо сопоставила реконструированный класс ошибки, условия и затронутое семейство прошивок с описанием CVE-2024-20154.
Технические выводы принадлежат аналитику.
В телефоне в вашем кармане находится как минимум два отдельных компьютера. Тот, с которым вы взаимодействуете, работает под управлением Android. Другой — базовая станция — работает полностью независимо, обрабатывает всю радиосвязь и почти полностью невидим для операционной системы над ним. Android может быть полностью пропатчен. Браузер может быть изолирован. Пользователь может никогда не нажать на вредоносную ссылку. Ничто из этого не имеет значения, если уязвимый код находится в прошивке модема, которая обрабатывает радиосигналы до того, как в дело вступает процессор приложений.
CVE-2024-20154 — именно такая уязвимость.
Некорректное широковещательное сообщение системной информации NB-IoT заставляет прошивку модема MediaTek принять контролируемое атакующим значение количества планирований, провести это значение через путь конфигурации от RRC к L1 без какого-либо ограничения и в конечном итоге использовать его в качестве границы цикла для цикла записи в стек внутри обработчика широковещательного канала NB-IoT. Когда количество превышает ёмкость массивов назначения, цикл записывает за их пределы, достигает сохранённых регистров в стеке и перезаписывает сохранённый адрес возврата. Затем функция восстанавливает повреждённое значение в регистр адреса возврата и выполняет переход по нему.
Что делает серьёзность именно такой:
Уязвимость была опубликована в бюллетене безопасности MediaTek от 6 января 2025 г. с рейтингом критичности «Критическая», затрагивая среди прочих семейство модемов LR12A. Samsung включил исправление в свой выпуск обслуживания безопасности за февраль 2025 г.
В этом посте не публикуется вооружённый эксплойт, и он не воспроизводим по тому, что здесь опубликовано. Цель — показать, где разрывается цепочка, почему каждый слой не смог её остановить, и что требуется для ответственной проверки ошибки базовой станции, когда вы не можете подключить отладчик к живому модему.
Основная цель: Samsung Galaxy A14 (SM-A145R). Радиоподсистема управляется процессором базовой станции MediaTek из семейства чипсетов MT6769 (Helio G80). Семейство MT6769 явно указано в списке затронутых чипсетов MediaTek для CVE-2024-20154.``` AP/CP firmware: A145RXXU1AWD1 Modem software: MOLY LR12A.R3.TC10.6M.A14.PR.SP.V1.P5 Build date: 2023-04-18
Прошивка baseband — это не код Android. Это отдельная встраиваемая система на радиоподсистеме SoC с собственным CPU, собственной RTOS и собственным адресным пространством, вне песочницы процессов Android.
### 2.2 Архитектура модема
Анализ извлечённого бинарного файла показывает, что процессор модема работает на MIPS32 со сжатыми инструкциями MIPS16e2 в режиме little-endian. MIPS16e2 — это 16-битное расширение кодирования для уменьшения размера встраиваемого кода, что согласуется с подходом MediaTek для baseband поколения Helio и подтверждается независимыми опубликованными исследованиями baseband для этого семейства SoC.
Операционная система — Nucleus RTOS, обеспечивающая планирование задач, очереди IPC-сообщений и пуловый аллокатор памяти. Здесь нет разделения привилегий ядра и пользователя, нет принудительного применения блока защиты памяти между задачами и нет аппаратного механизма защиты стека.
Все адреса в этом посте — виртуальные адреса в том виде, в каком они загружены в Ghidra с базой `0x90000000`.
### 2.3 Механизмы защиты (наблюдаемые в проанализированной сборке)
| Механизм защиты | Статус | Эффект |
|---|---|---|
| ASLR | Отсутствует | Адреса прошивки статичны и предсказуемы по образу |
| Stack canary | Отсутствует | `SAVE`/`RESTORE` сохраняет callee-saved регистры без защитного значения |
| NX / W^X | Отсутствует | Память стека исполняема |
| CFI | Отсутствует | Адреса возврата не проверяются ни по какой политике |
### 2.4 Подход к анализу
Три параллельных направления:
**Статический анализ.** Пакет прошивки Samsung → извлечение раздела CP → `md1img.img` → Ghidra (MIPS LE 32-bit, база `0x90000000`) с инженерными символами MediaTek, восстановленными из отладочной секции прошивки с помощью набора инструментов `mtk_bp` от NCC Group.
**Динамическая валидация.** Unicorn Engine (эмуляция MIPS32) использовался для изолированного выполнения конкретных процедур прошивки в двух фазах. Фаза 1 пыталась доказать неограниченное копирование `si_count` в контекст канала через нативную пару инструкций. Фаза 2 выполнила уязвимый цикл на реальных байтах прошивки и подтвердила, что собственные инструкции прошивки повреждают сохранённый адрес возврата. Там, где Фаза 1 не могла выполняться полностью нативно — поскольку окружение сервисных объектов RTOS, требуемое путём диспетчеризации CPHY, не было реконструировано — побочный эффект моделировался напрямую и помечался как таковой во всех выходных данных.
**Валидация на стороне радио.** srsRAN 4G с ZMQ loopback — только программное обеспечение, без радиоизлучения — подтвердил, что тестовая полезная нагрузка выживает при кодировании NB-IoT PHY и доставке транспортного блока.
---
## 3. Поверхность атаки: NB-IoT и SIB1-NB
### 3.1 Поверхность атаки до ассоциации
NB-IoT (Narrowband Internet of Things) — это 3GPP Release 13, разработанный для подключения ограниченных IoT-устройств с использованием существующего лицензированного спектра LTE. Он реализован в широком спектре современных сотовых SoC, включая те, что используются в потребительских смартфонах.
Находясь в RRC_IDLE, до установления любого RRC-соединения, устройство, ищущее обслуживание, будет: