
Análise técnica que examina a CVE-2024-20154, um estouro de buffer baseado em pilha no firmware do modem baseband NB-IoT MediaTek MT6769, abordando engenharia reversa e cadeia de exploração.
Classificação: CWE-121 — Estouro de Buffer Baseado em Pilha
Severidade: Crítica (boletim da MediaTek) · 8.8 Alta, Vetor de Ataque: Adjacente (CISA-ADP)
Tipo: Execução Remota de Código — sem interação do usuário, sem associação prévia
Divulgação: Boletim de Segurança da MediaTek, 6 de janeiro de 2025 https://corp.mediatek.com/product-security-bulletin/January-2025
Alvo analisado: Samsung Galaxy A14 SM-A145R — família MT6769 (Helio G80), dentro da lista de chipsets afetados da MediaTek - O firmware foi emulado sob condições seguras.
Status: Corrigido.
Esta foi minha primeira pesquisa publicada sobre baseband. Venho de um background distante de infraestrutura de telecomunicações, camadas de mediação de interceptação legal, análise de stingray e IMSI-catcher, e segurança de dispositivos embarcados — eu não havia feito engenharia reversa profunda de firmware em um modem celular anteriormente. Eu queria provar a mim mesmo que uma metodologia analítica estruturada se adapta entre alvos, e que a familiaridade com uma plataforma específica pode ser substituída por rastreamento rigoroso de cadeia. O NB-IoT se destacou porque está em uma interseção genuinamente perigosa: o protocolo é projetado para dispositivos IoT com recursos limitados, a superfície de ataque é pré-associação, e a pilha do modem o processa independentemente do que o usuário do aparelho esteja fazendo.
Quando o firmware corrigido foi analisado e o padrão vulnerável confirmado como ausente, o sistema de IA usado para análise em massa do firmware antes de direcionar funções específicas
correlacionou independentemente a classe de bug reconstruída, as condições e a família de firmware afetada à descrição da CVE-2024-20154.
As conclusões técnicas são do próprio analista.
O telefone no seu bolso contém pelo menos dois computadores separados. Aquele com o qual você interage roda Android. O outro — o baseband — roda de forma completamente independente, lida com toda a comunicação de rádio, e é quase inteiramente invisível para o sistema operacional acima dele. O Android pode estar totalmente corrigido. O navegador pode estar em sandbox. O usuário pode nunca tocar em um link malicioso. Nada disso importa se o código vulnerável está no firmware do modem que processa sinais de rádio antes que o processador de aplicação esteja envolvido.
A CVE-2024-20154 é exatamente esse tipo de vulnerabilidade.
Uma transmissão de informações de sistema NB-IoT malformada faz com que o firmware do modem MediaTek aceite uma contagem de agendamento controlada pelo atacante, carregue essa contagem pelo caminho de configuração RRC-para-L1 sem nunca limitá-la, e eventualmente a use como limite de laço para um laço de escrita em pilha dentro do manipulador de canal de broadcast do NB-IoT. Quando a contagem excede a capacidade dos arrays de destino, o laço escreve além deles, alcança registradores salvos na pilha, e sobrescreve o endereço de retorno salvo. A função então restaura o valor corrompido no registrador de endereço de retorno e salta para ele.
O que torna a severidade o que ela é:
A vulnerabilidade foi publicada no Boletim de Segurança da MediaTek de 6 de janeiro de 2025 com classificação de severidade Crítica, afetando a família de modems LR12A entre outras. A Samsung incorporou a correção em sua Versão de Manutenção de Segurança de fevereiro de 2025.
Este post não publica um exploit weaponizado e não é reproduzível a partir do que é publicado aqui. O objetivo é mostrar onde a cadeia quebra, por que cada camada falhou em detê-la, e o que é necessário para validar um bug de baseband de forma responsável quando você não pode anexar um depurador ao modem em execução.
Alvo principal: Samsung Galaxy A14 (SM-A145R). O subsistema de rádio é controlado por um processador de baseband MediaTek da família de chipsets MT6769 (Helio G80). A família MT6769 está explicitamente listada na lista de chipsets afetados da MediaTek para a CVE-2024-20154.``` AP/CP firmware: A145RXXU1AWD1 Modem software: MOLY LR12A.R3.TC10.6M.A14.PR.SP.V1.P5 Build date: 2023-04-18
O firmware do baseband não é código Android. É um sistema embarcado separado no subsistema de rádio do SoC, com sua própria CPU, seu próprio RTOS e seu próprio espaço de memória, fora do sandbox de processos do Android.
### 2.2 Arquitetura do modem
A análise do binário extraído mostra que o processador do modem executa MIPS32 com instruções comprimidas MIPS16e2 em modo little-endian. MIPS16e2 é uma extensão de codificação de 16 bits para redução de tamanho de código embarcado — consistente com a abordagem da MediaTek para basebands da geração Helio, confirmada por pesquisa independente publicada sobre basebands desta família de SoC.
O sistema operacional é o Nucleus RTOS, fornecendo escalonamento de tarefas, filas de mensagens IPC e um alocador de memória baseado em pool. Não há separação de privilégios kernel/usuário, nem aplicação de unidade de proteção de memória entre tarefas, nem mecanismo de proteção de pilha por hardware.
Todos os endereços neste post são endereços virtuais, conforme carregados no Ghidra na base `0x90000000`.
### 2.3 Mitigações (observadas na build analisada)
| Mitigação | Status | Efeito |
|---|---|---|
| ASLR | Ausente | Os endereços do firmware são estáticos e previsíveis a partir da imagem |
| Stack canary | Ausente | `SAVE`/`RESTORE` armazena registradores salvos pelo chamador sem valor de guarda |
| NX / W^X | Ausente | A memória da pilha é executável |
| CFI | Ausente | Os endereços de retorno não são validados contra nenhuma política |
### 2.4 Abordagem de análise
Três trilhas paralelas:
**Análise estática.** Pacote de firmware Samsung → extração da partição CP → `md1img.img` → Ghidra (MIPS LE 32-bit, base `0x90000000`) com símbolos de engenharia da MediaTek recuperados da seção de debug do firmware usando o conjunto de ferramentas `mtk_bp` do NCC Group.
**Validação dinâmica.** O Unicorn Engine (emulação MIPS32) foi usado para executar rotinas específicas do firmware isoladamente em duas fases. A Fase 1 tentou provar a cópia não limitada de `si_count` no contexto do canal através do par de instruções nativo. A Fase 2 executou o loop vulnerável em bytes reais do firmware e confirmou que as próprias instruções do firmware corrompem o endereço de retorno salvo. Onde a Fase 1 não pôde ser executada totalmente de forma nativa — porque o ambiente de objetos de serviço do RTOS exigido pelo caminho de despacho CPHY não foi reconstruído — o efeito colateral foi modelado diretamente e rotulado como tal em toda a saída.
**Validação pelo lado do rádio.** srsRAN 4G com um loopback ZMQ — apenas software, sem emissão de RF — confirmou que o payload de teste sobrevive à codificação PHY do NB-IoT e à entrega do bloco de transporte.
---
## 3. Superfície de Ataque: NB-IoT e SIB1-NB
### 3.1 Superfície de ataque pré-associação
NB-IoT (Narrowband Internet of Things) é o 3GPP Release 13, projetado para conectar dispositivos IoT restritos usando espectro LTE licenciado existente. É implementado em uma ampla variedade de SoCs celulares modernos, incluindo os presentes em smartphones de consumo.