
Эксплойт-код для CVE-2026-42533, предоставляющий proof-of-concept реализацию для указанной уязвимости.
Полноценное исследование безопасности CVE-2026-42533 (CVSS 4.0 9.2
CRITICAL): переполнение буфера в куче в скриптовом движке NGINX, где
основанный на регулярных выражениях map затирает общее состояние захвата между проходами
определения длины и копирования при вычислении сложного значения — достижимо
до аутентификации как на поверхности HTTP, так и на поверхности stream (TLS SNI).
Результат: удалённое выполнение кода до аутентификации (system() от имени пользователя worker
) в зафиксированной лабораторной среде, воспроизведено 3/3 — плюс независимая
исследовательская цепочка HTTP-модуля, которая прослеживает примитивы уязвимости от корневой
причины до детерминированного компрометирования worker.
| Утверждение | Доказательство |
|---|---|
| Корневая причина выведена из коммитов исправления (не из блогов) | finding-sheet |
| Безопасный детектор: оракул уязвимой и исправленной версии, ноль падений | poc/diagnose.py (расхождение: обслуживается vs 500 no buffer space) |
| Детерминированный DoS worker (аварийное завершение из-за повреждения кучи, core dump) | poc/crash.py — 2/2, изменение X-Worker-PID доказывает гибель worker |
| Переполнение произвольными байтами, включая NUL (запись, пригодная для указателей) | примитив HTTP body-map, проверено дампом raw-upstream |
| RCE до аутентификации, ASLR обойдён во время выполнения (без лабораторных костылей) | exploit/stream_rce.py — 3/3, утечка + spray + пересборка сессии |
# stream variant: the full chain (build is a pinned nginx rev, ~3 min)
cd lab/stream && docker compose up -d --build && cd ../..
python3 exploit/stream_rce.py --host 127.0.0.1 --port 29443 \
--cmd 'echo pwned-by-cve-2026-42533 > /tmp/proof'
docker compose -f lab/stream/docker-compose.yml exec nginx-rce cat /tmp/proof
# HTTP variant: deterministic crash PoC + safe detector
cd lab && docker compose up -d --build && cd ..
python3 poc/crash.py 127.0.0.1 8080 # worker aborts, core dumped
python3 poc/diagnose.py 127.0.0.1 8080 # VULNERABLE / PATCHED oracle
| Документ | Что это |
|---|---|
| docs/finding-sheet.md | Одностраничный даташит: версии, CVSS, шаблоны конфигурации, сигнатуры обнаружения |
| docs/report-ptes.md | Полный отчёт в структуре PTES (7 фаз) с лабораторными доказательствами |
| docs/research-writeup.md | Повествование об исследовании — методология, тупики, переносимые уроки, сравнение с предыдущими работами |
Цепочка исследований HTTP-модуля — это оригинальная работа: асимметричная компиляция скриптов с длинами/значениями, измеренная эмпирически, закон передачи значений через три копии, примитив карты тела с сохранением NUL и форензика цепочки прерываний аллокатора. Завершённый RCE через stream-вариант следует опубликованному подходу DepthFirst Disclosures (указанный исследователь) с указанием авторства — см. раздел Предыдущие работы в отчёте для пошагового сравнения обеих цепочек.
Этот репозиторий разделяет свою методологию с
CVE-2026-42945 — NGINX Rewrite Heap Overrun: Analysis & Deterministic DoS
(родственный репозиторий): тот же класс ошибок длины/значения с двумя проходами
в движке скриптов nginx, достигнутый там через rewrite/is_args — дифференциальный
детектор плюс детерминированный DoS воркера, с оставленным открытым вопросом о RCE.
docs/ finding sheet · PTES report · research writeup
poc/ diagnose.py (safe oracle) · crash.py (deterministic DoS)
exploit/
stream_rce.py full RCE chain (leak → spray → session rebuild → system)
exploit.py HTTP-module chain (research artifact, near-closure)
lab/ HTTP lab (vulnerable 1.31.2 + patched 1.31.3, backends)
lab/stream/ pinned-build lab for the stream variant
b767540, a8289aa, 0cca8e0Образец для образовательных исследований. Запускайте только против систем, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Уязвимость исправлена — обновите nginx до ≥ 1.30.4 / ≥ 1.31.3.