
Código de explotación para CVE-2026-42533, que proporciona una implementación de prueba de concepto para la vulnerabilidad especificada.
Investigación de seguridad de cadena completa sobre CVE-2026-42533 (CVSS 4.0 9.2
CRITICAL): un desbordamiento de búfer de heap en el motor de scripts de NGINX donde un map basado en
regex corrompe el estado de captura compartido entre las pasadas de longitud
y copia de una evaluación de valor complejo — alcanzable
pre-autenticación tanto en las superficies HTTP como stream (TLS SNI).
Resultado: ejecución remota de código pre-autenticación (system() como el usuario
worker) en un laboratorio fijado, reproducido 3/3 — además de una cadena de investigación
independiente sobre el módulo HTTP que mapea las primitivas del fallo desde la causa
raíz hasta el compromiso determinista del worker.
| Afirmación | Evidencia |
|---|---|
| Causa raíz derivada de los commits de corrección (no de blogs) | finding-sheet |
| Detector seguro: oráculo vulnerable vs parcheado, cero caídas | poc/diagnose.py (divergencia servida vs 500 no buffer space) |
| DoS determinista del worker (aborto por corrupción de heap, core dump) | poc/crash.py — 2/2, el cambio de X-Worker-PID prueba la muerte del worker |
| Desbordamiento de bytes arbitrarios incl. NULs (escritura apta para punteros) | primitiva de body-map HTTP, volcado de upstream en bruto verificado |
| RCE pre-autenticación, ASLR derrotado en tiempo de ejecución (sin apoyos de laboratorio) | exploit/stream_rce.py — 3/3, fuga + spray + reconstrucción de sesión |
# 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
| Doc | Qué es |
|---|---|
| docs/finding-sheet.md | Hoja de datos de una página: versiones, CVSS, patrones de configuración, firmas de detección |
| docs/report-ptes.md | Informe completo estructurado según PTES (7 fases) con evidencia de laboratorio |
| docs/research-writeup.md | La narrativa de la investigación — metodología, callejones sin salida, lecciones portables, comparación con trabajos previos |
La cadena de investigación del módulo HTTP es trabajo original: la compilación de scripts con longitudes/valores asimétricos medida empíricamente, la ley de paso de valores de tres copias, la primitiva de mapa de cuerpo preservadora de NUL y la forense de la cadena de abortos del asignador. El RCE completo de la variante de flujo sigue el enfoque publicado de DepthFirst Disclosures (un reportero acreditado) con atribución — véase la sección Trabajo previo del writeup para la comparación técnica por técnica de ambas cadenas.
Este repositorio comparte su metodología con
CVE-2026-42945 — NGINX Rewrite Heap Overrun: Analysis & Deterministic DoS
(repositorio hermano): la misma clase de bug de longitud/valor de dos pasadas en el motor de scripts de nginx, alcanzada allí a través de rewrite/is_args — detector diferencial más DoS determinista de workers, con la cuestión del RCE dejada abierta.
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, 0cca8e0Artefacto de investigación educativa. Ejecútalo solo contra sistemas que poseas o para los que tengas autorización explícita de probar. La vulnerabilidad está parcheada — actualiza nginx a ≥ 1.30.4 / ≥ 1.31.3.