概要
- CVE-2026-42945 は、NGINXの ngx_http_rewrite_module に存在する重大なヒープバッファオーバーフロー脆弱性
- 未認証のリモートコード実行 がrewriteおよびsetディレクティブ使用時に可能
- depthfirst のセキュリティ分析システムによる自動発見事例
- 影響を受けるバージョンと修正済みバージョンが明確に提示
- PoC および利用手順が公開されている
CVE-2026-42945: NGINX ngx_http_rewrite_moduleのヒープバッファオーバーフロー
-
脆弱性内容
- NGINXのscript engineは2パス処理(バッファサイズ計算→データコピー)を実施
- rewrite置換に「?」を含む場合、 is_argsフラグ がメインエンジンでセット
- 長さ計算パスではサブエンジンのis_argsが0のまま、 生データ長 を返す
- コピー時はis_args=1で ngx_escape_uri(NGX_ESCAPE_ARGS) を呼び出し、各エスケープ対象バイトが3バイトに拡張
- 攻撃者制御のURIデータにより、 ヒープバッファオーバーフロー が発生
-
攻撃手法
- クロスリクエストheap feng shui を利用し、隣接するngx_pool_tのcleanupポインタを破壊
- POSTボディでスプレー(URIバイト列はnullバイト不可のため)
- ngx_pool_cleanup_s構造体を偽造し、pool破棄時に system() を呼び出すよう誘導
- クロスリクエストheap feng shui を利用し、隣接するngx_pool_tのcleanupポインタを破壊
-
自動発見
- depthfirstのセキュリティ分析システムがNGINXソースを1クリックでオンボーディングし自律的に発見
- 他の3件のメモリ破損(CVE-2026-42946, CVE-2026-40701, CVE-2026-42934)も同時検出
影響範囲と修正バージョン
-
影響を受ける製品・バージョン
- NGINX Open Source
- 0.6.27 ~ 1.30.0
- NGINX Plus
- R32 ~ R36
- NGINX Open Source
-
修正バージョン
- NGINX Open Source
- 1.31.0, 1.30.1
- NGINX Plus
- R36 P4, R35 P2, R32 P6
- NGINX Open Source
-
ベンダー公式アドバイザリ
- https://my.f5.com/manage/s/article/K000160932
検証・PoC利用手順
-
検証環境
- Ubuntu 24.04.3 LTS上で動作確認済み
-
手順
./setup.sh- コンテナビルド
docker compose -f env/docker-compose.yml up- 脆弱なNGINXサーバ起動
python3 poc.py --shell- シェル取得(RCE発動)
depthfirstのセキュリティ分析システム紹介
- depthfirst による自動バグ検出
- ソースコードをワンクリックでオンボーディング
- メモリ破損・RCEなどの重大バグを自律的に検出
- 同様の分析を自身のコードで実施可能
- https://depthfirst.com/open-defense
総括・推奨対応
- 即時アップデート 推奨(該当バージョン利用時)
- rewrite/setディレクティブ利用環境では 特に注意
- サードパーティの自動脆弱性検出ツールの活用提案