これは、防御および内部ネットワーク調査向けの CVE-2026-42945 静的チェッカーツールです。NGINX の ngx_http_rewrite_module 関連設定に高リスクの rewrite の組み合わせが存在するかどうかを確認します。
このプロジェクトは脆弱性の悪用コードを提供せず、悪意のある HTTP リクエストを送信せず、クラッシュやリモートコード実行を引き起こそうとしません。ローカルの NGINX 設定ファイルを読み取り、セキュリティチームがアップグレードや設定の修正が必要かどうかを判断するのに役立ちます。
CVE-2026-42945 は、NGINX Open Source および NGINX Plus の ngx_http_rewrite_module におけるヒープバッファオーバーフローの脆弱性です。
公開されている公告で説明されているリスクシナリオには、おおむね以下が含まれます:
rewrite ディレクティブが存在する;rewrite、if、または set ディレクティブが続く;$1、$2)が使用されている;? が含まれている。NGINX Open Source の修正バージョンには 1.30.1、1.31.0 以降が含まれます。NGINX Plus については、ベンダー発表の修正バージョンを参照してください。
参考リンク:
Python 3 のみ必要で、サードパーティの依存関係はありません。
python3 --version
まず、NGINX の完全にレンダリングされた設定をエクスポートすることをお勧めします:
nginx -T > nginx-rendered.conf
python3 cve_2026_42945_checker.py nginx-rendered.conf
設定ディレクトリを直接スキャンすることもできます:
python3 cve_2026_42945_checker.py /etc/nginx
JSON 出力:
python3 cve_2026_42945_checker.py --json nginx-rendered.conf
設定のエクスポートに NGINX のバージョン情報が含まれていない場合は、手動でバージョンを指定して補助的な判断を行うことができます:
python3 cve_2026_42945_checker.py --json --nginx-version 1.30.0 nginx-rendered.conf
SARIF 出力。GitHub code scanning や内部のセキュリティプラットフォームにインポートするのに便利です:
python3 cve_2026_42945_checker.py --sarif nginx-rendered.conf > cve-2026-42945.sarif
0:高リスクの設定パターンが見つかりませんでした;1:少なくとも1つの高リスク設定パターンが見つかりました;2:入力ファイルまたはパスの読み取りに失敗しました。検出結果の主要フィールドは次のとおりです:
versions:設定またはパラメータから識別された NGINX バージョンとその判断結果;findings:該当したリスク設定の場所、理由、および証拠;summary:スキャンしたファイル数、検出数、および最高リスクレベル。リスク結果の例では、次のような証拠が示されます:
rewrite ... ?$1; -> set ... $1;
これは、この設定パターンが公開公告で説明されているリスク条件に近いことを示しており、優先的に再確認する必要があります。
まず、NGINX を修正バージョンにアップグレードしてください:
1.30.1、1.31.0 以降;また、rewrite ルールの見直しを推奨します:
$1、$2 のような名前のないキャプチャ参照への依存をできる限り避ける;nginx -T でエクスポートした完全な設定を使用してスキャンする。このツールは静的設定チェッカーであり、完全な脆弱性検証ツールではありません。以下の点をカバーできない可能性があります:
これを内部ネットワーク調査や設定監査の補助ツールとして使用し、唯一の脆弱性評価基準としないでください。
テストの実行:
python -m pytest
リポジトリには GitHub Actions ワークフローが含まれており、push および pull request 時に自動的にテストが実行されます。