
Codice di exploit per CVE-2026-42533, che fornisce un'implementazione proof-of-concept per la vulnerabilità specificata.
Ricerca di sicurezza full-chain su CVE-2026-42533 (CVSS 4.0 9.2
CRITICAL): un buffer overflow dell'heap nel motore di script di NGINX in cui una
map basata su regex sovrascrive lo stato di cattura condiviso tra la passata di lunghezza
e quella di copia di una valutazione di valore complesso — raggiungibile
pre-autenticazione sia sulla superficie HTTP che su quella stream (TLS SNI).
Risultato: esecuzione di codice in remoto pre-autenticazione (system() come utente
worker) in un ambiente di laboratorio bloccato, riprodotto 3/3 — più una catena di ricerca
indipendente sul modulo HTTP che mappa le primitive del bug dalla causa
radice alla compromissione deterministica del worker.
| Affermazione | Evidenza |
|---|---|
| Causa radice derivata dai commit di correzione (non da blog) | finding-sheet |
| Rilevatore sicuro: oracolo vulnerabile vs corretto, zero crash | poc/diagnose.py (divergenza servita vs 500 no buffer space) |
| DoS deterministico del worker (abort da corruzione dell'heap, core dump) | poc/crash.py — 2/2, il cambio di X-Worker-PID prova la morte del worker |
| Overflow di byte arbitrari incl. NUL (scrittura in grado di gestire puntatori) | primitiva body-map HTTP, dump raw-upstream verificato |
| RCE pre-autenticazione, ASLR sconfitto a runtime (nessun ausilio di laboratorio) | exploit/stream_rce.py — 3/3, leak + spray + ricostruzione della sessione |
# 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 | Che cos'è |
|---|---|
| docs/finding-sheet.md | Scheda tecnica di una pagina: versioni, CVSS, pattern di configurazione, firme di rilevamento |
| docs/report-ptes.md | Report completo strutturato secondo PTES (7 fasi) con evidenze di laboratorio |
| docs/research-writeup.md | La narrazione dell'indagine — metodologia, vicoli ciechi, lezioni trasferibili, confronto con lavori precedenti |
La catena di ricerca sul modulo HTTP è lavoro originale: la compilazione dello script con lunghezze/valori asimmetrici misurata empiricamente, la legge del passaggio di valori a tre copie, la primitiva body-map che preserva i NUL e la forensic sulla catena di abort dell'allocatore. L'RCE completo sulla variante stream segue l'approccio pubblicato di DepthFirst Disclosures (un reporter accreditato) con attribuzione — si veda la sezione Prior work del writeup per il confronto tecnica per tecnica di entrambe le catene.
Questo repo condivide la sua metodologia con
CVE-2026-42945 — NGINX Rewrite Heap Overrun: Analysis & Deterministic DoS
(repo gemello): la stessa classe di bug lunghezza/valore a due passaggi
nel motore di script di nginx, raggiunta lì tramite rewrite/is_args —
rilevatore differenziale più DoS deterministico del worker, con la
questione RCE lasciata aperta.
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, 0cca8e0Artefatto di ricerca a scopo didattico. Eseguire solo su sistemi di propria proprietà o per i quali si è esplicitamente autorizzati a eseguire test. La vulnerabilità è stata corretta — aggiornare nginx a ≥ 1.30.4 / ≥ 1.31.3.