
Code d'exploitation pour CVE-2026-42533, fournissant une implémentation de preuve de concept pour la vulnérabilité spécifiée.
Recherche de sécurité full-chain sur CVE-2026-42533 (CVSS 4.0 9.2
CRITICAL) : un débordement de tampon de tas dans le moteur de script de NGINX où une
map basée sur une regex écrase l'état de capture partagé entre les passes de longueur
et de copie d'une évaluation de valeur complexe — atteignable
pre-authentication sur les surfaces HTTP et stream (TLS SNI).
Résultat : exécution de code à distance pre-auth (system() en tant qu'utilisateur
worker) dans un lab épinglé, reproduit 3/3 — plus une chaîne de recherche
indépendante sur le module HTTP qui cartographie les primitives du bug de la cause
racine à une compromission déterministe du worker.
| Affirmation | Preuve |
|---|---|
| Cause racine dérivée des commits de correction (pas de blogs) | finding-sheet |
| Détecteur sûr : oracle vulnérable vs corrigé, zéro crash | poc/diagnose.py (divergence servie vs 500 no buffer space) |
| DoS déterministe du worker (abandon sur corruption de tas, core dump) | poc/crash.py — 2/2, le changement de X-Worker-PID prouve la mort du worker |
| Débordement d'octets arbitraires incl. NULs (écriture capable de pointeurs) | primitive body-map HTTP, dump upstream brut vérifié |
| RCE pre-auth, ASLR vaincu à l'exécution (sans béquilles de lab) | exploit/stream_rce.py — 3/3, fuite + spray + reconstruction de session |
# 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 | Ce que c'est |
|---|---|
| docs/finding-sheet.md | Fiche technique d'une page : versions, CVSS, modèles de configuration, signatures de détection |
| docs/report-ptes.md | Rapport complet structuré selon PTES (7 phases) avec preuves de laboratoire |
| docs/research-writeup.md | Le récit de l'investigation — méthodologie, impasses, leçons transférables, comparaison avec les travaux antérieurs |
La chaîne de recherche sur le module HTTP est un travail original : la compilation de scripts à longueurs/valeurs asymétriques mesurée empiriquement, la loi de passage de valeur en trois copies, la primitive de body-map préservant les NUL, et l'analyse forensique de la chaîne d'abandon de l'allocateur. Le RCE de variante de flux complété suit l'approche publiée de DepthFirst Disclosures (un rapporteur crédité) avec attribution — voir la section Travaux antérieurs du writeup pour la comparaison technique par technique des deux chaînes.
Ce dépôt partage sa méthodologie avec
CVE-2026-42945 — NGINX Rewrite Heap Overrun: Analysis & Deterministic DoS
(dépôt frère) : la même classe de bug longueur/valeur à deux passes dans le moteur de script nginx, atteinte ici via rewrite/is_args — détecteur différentiel plus DoS déterministe du worker, avec la question du RCE laissée ouverte.
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, 0cca8e0Artefact de recherche à but éducatif. À exécuter uniquement contre des systèmes que vous possédez ou pour lesquels vous êtes explicitement autorisé à effectuer des tests. La vulnérabilité est corrigée — mettez à niveau nginx vers ≥ 1.30.4 / ≥ 1.31.3.