CVE-2026-42945(Nginx Rift)に対するローカルリスク評価ツール。「バージョンが影響を受ける=危険」と単純に判断するのではなく、実際にリスクを決定する3つの条件を段階的にチェックし、あなたの環境に合った結論を提供します。
CVE-2026-42945 は、nginx の ngx_http_rewrite_module に18年間存在したヒープバッファオーバーフローの脆弱性(CWE-122)で、CVSS 4.0 スコアは 9.2 です。しかし、アナウンスには重要な制約があります:
"ASLR 保護が無効なシステムではコード実行が可能"
RCE が成立するには、以下の3つの条件をすべて満たす必要があります:
rewrite + set ディレクティブの組み合わせが設定されているいずれかが欠けると、最悪の結果はワーカープロセスのクラッシュ後の自動再起動(DoS)であり、サーバー乗っ取りには至りません。
詳細分析はこちら:《nginx に18年隠された爆弾、9.2点の脆弱性はあなたのサーバーを本当に危険にさらすのか?》
# 実行(nginx の設定全体を読むために sudo が必要)
sudo bash check_cve_2026_42945.sh
スクリプトは以下の4項目を順にチェックし、いずれかが満たされない場合は早期に終了して結論を表示します:
| チェック項目 | 説明 |
|---|---|
| nginx バージョン | 影響範囲:0.6.27 – 1.30.0 |
| 脆弱性トリガー設定 | 同じ location ブロック内に ? を含む rewrite とキャプチャグループ付き set が共存 |
| ASLR 状態 | /proc/sys/kernel/randomize_va_space を読み取り |
| コンパイル時防御 | -fcf-protection / FORTIFY_SOURCE / Full RELRO / スタック保護を検出 |
ケース1:バージョンは影響を受けるが、トリガー設定なし(最も一般的)
[*] nginx バージョン:1.24.0
[!] バージョン 1.24.0 は影響範囲内です。トリガー条件を継続チェック...
[*] nginx 設定をスキャン中(rewrite+set の脆弱性設定組み合わせをチェック)...
[✓] 脆弱性トリガー設定(rewrite+set 組み合わせ)は見つかりませんでした
結論:バージョンは影響を受けるが、トリガー設定なし、実際のリスクは極めて低い
推奨:1.30.1 / 1.31.0 へのアップグレードを計画、緊急対応は不要
ケース2:脆弱性設定あり、ASLR 有効、コンパイル時防御が十分
[!] バージョン 1.24.0 は影響範囲内です。トリガー条件を継続チェック...
[!] 脆弱性トリガー設定を検出:
→ location ~ ^/api/(.*)$ {
[✓] ASLR 有効(レベル 2、完全ランダム化)
→ RCE の信頼できる悪用に必要な前提が満たされていないため、最悪の場合はワーカープロセスクラッシュ(DoS)
[✓] -fcf-protection(Intel CET 制御フロー保護)を検出
[✓] FORTIFY_SOURCE=3 を検出
[✓] Full RELRO(GOT 読み取り専用)を検出
[✓] スタック保護(stack-protector)を検出
リスクレベル:低
推奨:次回のメンテナンスウィンドウで nginx 1.30.1 / 1.31.0 にアップグレード
ケース3:脆弱性設定あり、ASLR 無効
[!] 脆弱性トリガー設定を検出:
→ location ~ ^/api/(.*)$ {
[✗] ASLR が無効!RCE リスクが大幅に上昇
リスクレベル:高(DoS 確定 / RCE 可能性)
至急対応:
1. 一時的にトリガーとなる rewrite+set 設定を削除または修正
2. ASLR を有効にする:echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
3. nginx をアップグレード:apt install nginx または ソースから 1.30.1+ をビルド
| レベル | 意味 | 推奨処理ペース |
|---|---|---|
| 影響なし | nginx がインストールされていない、またはバージョンが修正済み | 操作不要 |
| 極めて低い | バージョンは影響を受けるがトリガー設定なし | 次回定期メンテナンス時にアップグレード |
| 低 | トリガー設定あり、ASLR + コンパイル時防御が十分 | 次回メンテナンスウィンドウでアップグレード |
| 中 | トリガー設定あり、防御にギャップあり | できるだけ早くアップグレード、可用性にリスク |
| 高 | トリガー設定 + ASLR 無効 + 防御不足 | 即時対応 |
| 製品 | 影響バージョン | 修正バージョン |
|---|---|---|
| NGINX オープンソース版 | 0.6.27 – 1.30.0 | 1.30.1 / 1.31.0 |
| NGINX Plus | R32 – R36 | R36 P4 / R35 P2 / R32 P6 |
# Ubuntu / Debian
sudo apt update && sudo apt install nginx
# バージョン確認
nginx -v
本スクリプトは以下のシナリオで実際に検証済み:
テスト環境:Ubuntu 22.04 LTS、nginx 1.24.0(Ubuntu 公式パッケージ)
include 構造では見逃しの可能性あり(スクリプトは nginx -T ですべての include を展開するため、ほとんどのケースをカバー)MIT