
CVE-2026-42945の概念実証エクスプロイト。NGINXのリライトモジュールにおけるヒープバッファオーバーフローであり、クロスリクエストヒープファンシュイを介して認証不要のリモートコード実行を可能にします。
CVE-2026-42945 の RCE 概念実証。2008年に導入された NGINX の ngx_http_rewrite_module における重大なヒープバッファオーバーフローです。このバグにより、rewrite および set ディレクティブを使用するサーバーに対して、認証なしのリモートコード実行が可能になります。
この脆弱性は、他の3つのメモリ破損の問題(CVE-2026-42946、CVE-2026-40701、CVE-2026-42934)とともに、depthfirst のセキュリティ分析システムにより、NGINX ソースのオンボーディングを1回クリックするだけで自律的に発見されました。
自分のコードでこのような問題を見つけたいですか? https://depthfirst.com/open-defense で同じシステムをお試しください。
NGINX のスクリプトエンジンは2パスプロセスを使用します。まず必要なバッファサイズを計算し、次にデータをコピーします。is_args フラグは、rewrite の置換文字列に ? が含まれている場合にメインエンジンに設定されますが、長さ計算パスは新しくゼロで初期化されたサブエンジンで実行されます。つまり:
is_args = 0 であるため、生のキャプチャ長を返します。is_args = 1 であるため、ngx_escape_uri を NGX_ESCAPE_ARGS で呼び出し、エスケープ可能な各バイトを3バイトに拡張します。コピーにより、攻撃者が制御するURIデータでアンダーサイズのヒープバッファがオーバーフローします。悪用にはクロスリクエストヒープフェンシュイを使用して、隣接する ngx_pool_t の cleanup ポインタを破壊します(URIバイトは null バイトを含めないため、POST ボディを介してスプレーします)。これを偽の ngx_pool_cleanup_s にリダイレクトし、プール破棄時に system() を呼び出します。
このバグの詳細については、技術解説 をご覧ください。
| Product | Affected | Fixed in |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
ベンダーアドバイザリー全文:https://my.f5.com/manage/s/article/K000160932
Ubuntu 24.04.3 LTS でテスト済み。
./setup.sh — コンテナをビルドします。docker compose -f env/docker-compose.yml up — 脆弱な NGINX サーバーを起動します。python3 poc.py --shell — シェルを取得します。