
Node.js HTTPアプリケーションにおけるCVE-2026-111497を検出するためのコマンドラインツールです。
スキャナは4つの1バイト制御リクエストを送信し、エンドポイントが有効なBrotli JSON、不正なBrotli、JSONコンテンツタイプを持たないリクエスト、およびサポートされていないエンコーディングをどのように処理するかを確認します。その後、23,068,764バイトのBrotliプローブをストリーミングし、有効な制御リクエストを繰り返します。
ターゲットが脆弱であると報告されるのは、プローブ全体が有効なルート応答クラスに到達し、不正応答クラスがそれとは異なり、最終制御リクエストによってエンドポイントが安定したままであることが確認された場合のみです。これはAssetnoteの内部ポストモジュール検出ロジックと一致しており、コマンドは実行しません。
URLパスは保持され、デフォルトは / です。リダイレクトは追跡されません。
テスト対象の各エンドポイントは、5つの1バイトリクエストと1つの23,068,764バイトのプローブを受信します。プローブは Expect: 100-continue を使用するため、プロキシはボディがアップロードされる前に、通知されたサイズを拒否できます。
pip install -r requirements.txt
docker build -t node2shell-scanner .
docker run --rm node2shell-scanner -u https://example.com/api
python3 scanner.py -u https://example.com/api
python3 scanner.py -l hosts.txt -t 20 -o results.json
python3 scanner.py -u https://example.com --path /api/json
python3 scanner.py -u https://example.com -H "Authorization: Bearer token"
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Per-request timeout in seconds (default: 60)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable TLS certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show verdict reasons and response snippets
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
結果はターミナルに出力されます。-o を指定すると、脆弱なホストが比較モードとマスク処理されたリクエスト/レスポンスの証拠とともにJSONに保存されます。すべての判定を保存するには --all-results を使用してください。
SearchlightのExposure Platform向けに開発された検出ロジックを用いて、Assetnote Security Research Teamが構築しました。