
CVE-2026-42533(CVSS 4.0 9.2 CRITICAL)に関するフルチェーンセキュリティリサーチ: NGINX のスクリプトエンジンにおけるヒープバッファオーバーフローで、正規表現ベースの map が複合値評価の長さパスとコピーパスの間で共有キャプチャ状態を破壊する — HTTP とストリーム(TLS SNI)の両サーフェスで認証前に到達可能。
結果: 認証前リモートコード実行(ワーカーユーザーとしての system())を固定ラボ環境で 3/3 再現 — さらに、バグのプリミティブを根本原因から決定論的ワーカー侵害までマッピングする独立した HTTP モジュール研究チェーンも含む。
| 主張 | 証拠 |
|---|---|
| 根本原因は修正コミットから導出(ブログからではない) | finding-sheet |
| 安全な検出器: 脆弱版 vs パッチ版のオラクル、クラッシュゼロ | poc/diagnose.py(配信時の乖離 vs 500 no buffer space) |
| 決定論的ワーカー DoS(ヒープ破壊によるアボート、コアダンプ) | poc/crash.py — 2/2、X-Worker-PID の変化がワーカーの死亡を証明 |
| NUL を含む任意バイトのオーバーフロー(ポインタ書き込み可能) | HTTP body-map プリミティブ、raw-upstream ダンプで検証済み |
| 認証前 RCE、実行時に ASLR を突破(ラボの補助なし) | exploit/stream_rce.py — 3/3、リーク + スプレー + セッション再構築 |
# 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 | 1ページのデータシート: バージョン、CVSS、設定パターン、検出シグネチャ |
| docs/report-ptes.md | ラボでの証拠を含む、PTES構造の完全なレポート(7フェーズ) |
| docs/research-writeup.md | 調査の記録 — 方法論、行き詰まり、汎用可能な教訓、先行研究との比較 |
HTTPモジュールの研究チェーンは独自の成果である。非対称な 長さ/値のスクリプトコンパイルを実測し、値の3コピー伝播則、 NULを保持するbody-mapプリミティブ、そしてアロケータのアボート チェーンのフォレンジックを明らかにした。完成したストリーム変種のRCEは、 DepthFirst Disclosures(クレジット表記された報告者)の公開された アプローチに帰属表示のうえ従っている — 両チェーンの手法ごとの比較は ライトアップの先行研究セクションを参照のこと。
本リポジトリは
CVE-2026-42945 — NGINX Rewrite Heap Overrun: Analysis & Deterministic DoS
(姉妹リポジトリ)と方法論を共有している。nginxのスクリプトエンジンに
おける同じ2パスの長さ/値バグクラスであり、そこでは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 にアップグレードしてください。