
2026/05/15 2:17
新しい Nginx 攻撃ツールの発表です。 **New Nginx Exploit**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
CVE-2026-42945 で広く利用されている NGINX ウェブサーバーにおいて、認証を必要としない致命的なリモートコード実行(RCE)脆弱性が発見されました。この欠陥は
ngx_http_rewrite_module にあり、POST リクエストを通じてログイン資格情報を用意することなく悪意のあるコードを実行できるヘイプバッファオーバーフローに起因します。rewrite および set ディレクティブの両方に影響を与えます。depthfirst のセキュリティ分析システムによって自律的に発見され、Ubuntu 24.04.3 LTS で検証されたテスト環境において完全なシェルアクセスをデモンストレーションする利用可能プロトタイプ(PoC)コード(setup.sh、Docker Compose 構成、poc.py を含む)が公開されています。
影響を受ける NGINX バージョンには、Open Source リリースの 0.6.27 から 1.30.0 まで、および NGINX Plus の R32 から R36 までが含まれます。加えて 2 つの追加のメモリー破損問題も同定されました:CVE-2026-40701 と CVE-2026-42934(主となる CVE-2026-42945 とともに)。攻撃手法は、リクエスト処理中に隣接する
ngx_pool_t クリーンアップポインタを破損させるクロスリクエストの「heap feng shui」を活用します。
ファームウェア更新がリリースされています:NGINX Open Source ユーザーはバージョン 1.31.0 または 1.30.1 にアップデートし、NGINX Plus ユーザーは現在のリリースラインに応じて R36 P4、R35 P2、または R32 P6 に更新する必要があります。完全なベンダーアナウンスメントは https://my.f5.com/manage/s/article/K000160932 で入手可能です。パッチ未適用の古いバージョンを維持している組織は、無断でのサーバーアクセスという即時的脅威に直面しており、この深刻なリスクを軽減するためにアップデートを最優先で実行する必要があります。アップデートを遅らせた場合、インフラストラクチャはこれらのメモリーオーバーフロー経路によって簡単に乗っ取られてしまいます。
本文
NGINX の ngx_http_rewrite_module に導入されている 2008 年以来の深刻なヒープバッファオーバーフロー欠陥(CVE-2026-42945)に関する概念実装コード。この脆弱性は、rewrite および set ディレクティブを利用するサーバーに対し、無認証でリモートコードの実行を可能にします。同様に、深度第一社(depthfirst)のセキュリティ分析システムが NGINX のソースコードを 1 つクリックですぐにオンボーディングした結果、自律的に発見したのはこの CVE-2026-42945 だけでなく、さらに 3 つのメモリ破損問題(CVE-2026-42946、CVE-2026-40701、CVE-2026-42934)でした。コード内に同様の問題を見つけることはできますか?そのためには、https://depthfirst.com/open-defense で同じシステムをお試しください。
脆弱性の概要(TL;DR)
NGINX のスクリプトエンジンでは、2 つの段階のプロセスが採用されています:まず必要なバッファサイズを計算し、その後データをコピーします。「is_args」フラグは、リプレースメント部分に「?」が含まれている場合にメインエンジンにセットされますが、長さ計算の段階ではゼロ埋めされたサブエンジンで実行されるため、以下のような不整合が生じます:
- 長さ計算段階では「is_args = 0」と見なされ、生のキャプチャ長が返されます。
- コピー段階では「is_args = 1」と認識され、各エスケープ可能なバイトを 3 バイトに拡張する
フラグ付きのNGX_ESCAPE_ARGS
が呼び出されます。ngx_escape_uri
この結果、攻撃者によって制御された URI データを使用して、不足サイズのヒープバッファへのオーバーフローが発生します。具体的なエクスプロイテーションでは、クロスリクエストのヒープファンゲーション(heap feng shui)を活用し、隣接する
ngx_pool_t のクイックアップポインタを破損させます(このポインタは POST リクエストボディを通じてスプレードされ、URI バイトには Null バイトを含むことができないため)。この破損されたポインタは、偽の ngx_pool_cleanup_s オブジェクトに再方向付けられ、プールを破棄する際に system() を実行します。この脆弱性について詳しくは、技術解説をご覧ください。
影響範囲と修正バージョン
| 製品 | 影響を受けたバージョン | 修正されたバージョン |
|---|---|---|
| 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
— 脆弱な NGINX サーバーを起動する。docker compose -f env/docker-compose.yml up
— シェルを作成する。python3 poc.py --shell