
| チェック | 方法 |
|---|
| バージョン | nginx -V、dpkg/rpm/apk、Dockerfile/compose イメージタグ |
| 設定パターン | nginx.conf と全 include ファイルを対象とした、ブレースを考慮した解析 |
| エディション | 影響を受けるバージョン | 修正されたバージョン |
|---|---|---|
| NGINX OSS | 0.6.27 – 1.30.1 | 1.31.0+(または1.30.1パッチ適用) |
| NGINX Plus | R32(R32P6より前) | R32P6+ |
| NGINX Plus | R36(R36P4より前) | R36P4+ |
| NGINX Plus | R37+ | 影響なし |
1.30.1に関する注意: パッチ適用済みの1.30.1安定版ビルドも、脆弱なバージョンと 同じバージョン文字列を報告するため、スキャナは1.30.1をすべて
POTENTIALLY_VULNERABLE(終了コード1、保守的)と分類します。パッチが適用されていることを 確認するには、パッケージのチェンジログ / アドバイザリのバックポートを確認してください。
スコープブロックは、以下の3つの条件がすべて満たされた場合にフラグ付けされます。
rewrite、if、または set ディレクティブが、名前なしPCREキャプチャ参照($1–$9、ブレース形式 ${1}–${9} を含む)を使用している。? 文字が含まれている
(rewrite/set の場合、正規表現パターン引数は除外される — そこでの ? はPCRE量指定子です。if 条件は保守的にスキャンされます)。rewrite/if/set ディレクティブが同じスコープ内で後続している
(includeはインクルード元のスコープに展開されるため、include 境界をまたぐペアも検出されます)。# Clone and run
git clone https://github.com/simota/nginx-rift-scanner.git
cd nginx-rift-scanner
# Scan local nginx (binary in PATH, config at /etc/nginx/nginx.conf)
python3 scripts/scan_nginx_rift.py
# Custom paths
python3 scripts/scan_nginx_rift.py \
--nginx-binary /usr/sbin/nginx \
--config /etc/nginx/nginx.conf \
--prefix /etc/nginx \
--scan-dir /app
# JSON output (CI / SIEM)
python3 scripts/scan_nginx_rift.py --json
# Validate with included fixtures
python3 scripts/scan_nginx_rift.py --config fixtures/vulnerable.nginx.conf
python3 scripts/scan_nginx_rift.py --config fixtures/safe.nginx.conf
終了コード: 0 = クリーン、1 = VULNERABLE / POTENTIALLY_VULNERABLE バージョン、または設定パターンがフラグ付けされた場合。
| フラグ | デフォルト | 説明 |
|---|---|---|
--nginx-binary PATH | nginx | nginx実行ファイルへのパス |
--config PATH | /etc/nginx/nginx.conf | スキャンするルートnginx設定 |
--prefix PATH | --config のディレクトリ | 相対 include パスを解決するために使用するnginx設定プレフィックス(nginxは、インクルード元ファイルのディレクトリではなくプレフィックスを基準に解決します) |
--scan-dir PATH | . | Dockerfile/composeファイルを検索するディレクトリ |
--json | — | JSONレポートをstdoutに出力 |
アップグレード(推奨):
回避策 — ? も含むすべての
rewrite/if/set ディレクティブで、名前なしキャプチャを名前付きキャプチャに置き換えます:
# Vulnerable
rewrite ^/api/(\w+)$ /new-api?path=$1 last;
# Safe
rewrite ^/api/(?<action>\w+)$ /new-api?path=$action last;
設定の検出結果はヒューリスティックです。フラグ付けされたディレクティブが悪用可能性を保証するわけではありません — ? がURI構築パスに含まれていない場合や、キャプチャ参照がオーバーフローする割り当てと相互作用しない場合があります。すべての検出結果は、対応を優先する前に人間がレビューする必要があります。
nginx バイナリ(任意 — 存在しない場合、バージョンチェックはスキップされます)| ファイル | 期待される結果 |
|---|---|
fixtures/vulnerable.nginx.conf | 設定検出3件、終了コード1 |
fixtures/safe.nginx.conf | 設定検出0件、終了コード0 |
python3 -m unittest discover -s tests -v