
CVE-2026-42945 NGINX ヒープオーバーフロー脆弱性スキャン・検証ツール
NGINX Rift は、CVE-2026-42945 および CVE-2026-9256(NGINX ngx_http_rewrite_module ヒープオーバーフロー脆弱性)のためのオープンソーススキャン・検証ツールです。リモートのネットワークフィンガープリントスキャンとローカルの詳細な構成監査をサポートし、セキュリティチームがNGINX環境の潜在的なリスクを迅速に特定するのに役立ちます。
| プロパティ | 詳細 |
|---|---|
| CVE番号 | CVE-2026-9256 |
| 脆弱性タイプ | ヒープバッファオーバーフロー (Heap-based Buffer Overflow, CWE-122) |
| 影響コンポーネント | NGINX ngx_http_rewrite_module |
| 影響バージョン | NGINX オープンソース版 0.1.17 ~ 1.31.0 (mainline) / 0.1.17 ~ 1.30.1 (stable) |
| 修正バージョン | NGINX 1.31.1 (mainline) / 1.30.2 (stable)、2026-05-22 リリース |
| 危険度 | 高リスク — サービス拒否 (DoS) を引き起こす可能性があり、ASLRが無効の場合、リモートコード実行 (RCE) が可能 |
トリガ条件:rewrite ディレクティブがPCRE正規表現を使用し、重複キャプチャが存在し、置換文字列内で複数の無名キャプチャグループが参照されている場合。
トリガ条件:rewrite ディレクティブの置換URLに ? と無名キャプチャグループ参照(例:$1)が同時に含まれている場合。
# CVE-2026-42945 トリガ設定: ? + $1
rewrite ^/api/(.*)$ /internal?id=$1 last;
# CVE-2026-9256 トリガ設定: 複数の $N キャプチャ参照
rewrite ^/(\w+)/(\d+)$ /$2/$1 last;
# 安全な設定 (名前付きキャプチャグループを使用)
rewrite ^/api/(?<myid>.*)$ /internal?id=$myid last;
dpkg/rpm パッケージマネージャと連携し、ディストリビューションがバックポートにより脆弱性を修正済みか検出rewrite-target アノテーションを自動検出Releases ページから該当プラットフォームのバイナリをダウンロードしてください。
git clone https://github.com/nu0l/NGINX-Rift.git
cd NGINX-Rift
# 単一プラットフォームコンパイル
go build -o nginx_rift_scanner nginx_rift_scanner.go
# 全プラットフォームクロスコンパイル
chmod +x build.sh && ./build.sh
./nginx_rift_scanner -h
# 単一ターゲットスキャン
./nginx_rift_scanner scan -u http://example.com
# バッチスキャン(ファイルからURLリストを読み込み)
./nginx_rift_scanner scan -f url.txt
url.txt は1行に1つのURL、例:
http://target1.com
https://target2.com
target3.com
# デフォルトのNGINX設定パスを自動検索
./nginx_rift_scanner verify
# 設定ファイルのパスを指定
./nginx_rift_scanner verify -p /etc/nginx/nginx.conf
Verify モードは3段階の監査を実行します:
nginx -v を実行してバージョンを取得し、OSパッケージマネージャのバックポートパッチを確認include ディレクティブを含む)、危険なrewriteルールを識別kubectl が検出された場合、クラスタ内のすべてのIngressリソースを自動スキャンNGINX-Rift/
├── nginx_rift_scanner.go # メインプログラムソースコード
├── build.sh # 全プラットフォームクロスコンパイルスクリプト
├── go.mod # Go モジュール定義
└── README.md
net/http を使用してHTTPリクエストを送信し、Server レスポンスヘッダを解析nginx/X.Y.Z) および商用版 (NGINX Plus RXX) のバージョン番号を抽出include ディレクティブを追跡、visited マップを使用して循環参照を防止? + $N (CVE-2026-42945) および複数の $N 参照 (CVE-2026-9256)kubectl get ingress --all-namespaces -o yaml によりK8s Ingress設定を動的に取得dpkg-query/rpm --changelog を呼び出してOSレベルのバックポートパッチを検出 (両方のCVE番号を同時に検索)CGO_ENABLED=0)、C依存なしのスタンドアロンバイナリを生成MIT License
セキュリティコミュニティによる貢献。
| プロパティ | 詳細 |
|---|
| CVE番号 | CVE-2026-42945 |
| 脆弱性タイプ | ヒープオーバーフロー (Heap Overflow) |
| 影響コンポーネント | NGINX ngx_http_rewrite_module |
| 影響バージョン | NGINX オープンソース版 0.6.27 ~ 1.30.0 / NGINX Plus R32 ~ R36 |
| 修正バージョン | NGINX 1.30.1 (stable) / 1.31.0 (mainline) / NGINX Plus R32 P6+ |
| 危険度 | 高リスク — サービス拒否 (DoS) およびリモートコード実行 (RCE) が可能 |
| 優先度 | 対応策 | 説明 |
|---|
| P0 | NGINXのアップグレード | 1.30.2+ (stable) / 1.31.1+ (mainline) / NGINX Plus 最新セキュリティバージョンにアップグレード |
| P0 | OSパッケージマネージャの更新 | apt-get upgrade nginx または yum update nginx |
| P1 | 緊急設定緩和 | rewrite内の $1、$2 などを名前付きキャプチャグループ $name に変更、ダウンタイム不要 |
| P2 | K8s Ingress 修正 | Ingress Controllerをアップグレードし rewrite-target アノテーションを修正 |
| P3 | 多層防御 | server_tokens off; を設定してバージョンフィンガープリントを隠蔽 |