
RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
React Server Components を使用する Next.js アプリケーションにおいて、CVE-2025-55182 および CVE-2025-66478 を検出するためのコマンドラインツールです。
脆弱性と検出方法の技術的な詳細については、弊社のブログ記事をご覧ください: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
デフォルトでは、スキャナーは決定的な算術演算(41*271 = 11111)を実行する RCE 概念実証(PoC)ペイロードを含む、巧妙に細工された multipart POST リクエストを送信します。脆弱なホストは、X-Action-Redirect レスポンスヘッダーに /login?a=11111 として結果を返します。
スキャナーはデフォルトでルートパス(/)をテストします。カスタムパスをテストするには --path または --path-file を使用します。脆弱でない場合、同一ホストへのリダイレクト(例:/ から /en/)を追跡し、リダイレクト先をテストします。クロスオリジンのリダイレクトは追跡されません。
--safe-check フラグは、ターゲット上でコードを実行せずに、サイドチャネル指標(特定のエラーダイジェストを伴う 500 ステータスコード)に依存する代替検出方法を使用します。RCE の実行が望ましくない場合は、このモードを使用してください。
--waf-bypass フラグは、multipart リクエストボディの先頭にランダムなジャンクデータを付加します。これにより、リクエストボディの先頭部分のみを解析する WAF のコンテンツ検査を回避できます。デフォルトのサイズは 128KB で、--waf-bypass-size で設定できます。WAF バイパスが有効な場合、タイムアウトは自動的に 20 秒に増加します(明示的に設定されていない場合)。
--vercel-waf-bypass フラグは、Vercel WAF の保護をバイパスするために特別に設計された代替ペイロードのバリアントを使用します。これは、追加のフォームフィールドを持つ異なる multipart 構造を使用します。
--windows フラグは、Windows 上で動作するターゲットに対して、ペイロードを Unix シェル(echo $((41*271)))から PowerShell(powershell -c "41*271")に切り替えます。
pip install -r requirements.txt
単一のホストをスキャンします:
python3 scanner.py -u https://example.com
ホストのリストをスキャンします:
python3 scanner.py -l hosts.txt
複数スレッドでスキャンして結果を保存します:
python3 scanner.py -l hosts.txt -t 20 -o results.json
カスタムヘッダーでスキャンします:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
安全なサイドチャネル検出を使用します:
python3 scanner.py -u https://example.com --safe-check
Windows ターゲットをスキャンします:
python3 scanner.py -u https://example.com --windows
WAF バイパスでスキャンします:
python3 scanner.py -u https://example.com --waf-bypass
カスタムパスをスキャンします:
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url Single URL to check
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
RCE の PoC は元々 @maple3142 によって公開されました。動作する PoC を公開してくださった彼らの仕事に心から感謝しています。
このツールはもともと、RCE を安全に検出する方法として構築されました。この機能は今も --safe-check(「安全検出」モード)で利用できます。
結果はターミナルに出力されます。-o を使用する場合、脆弱なホストは、検証用の完全な HTTP リクエストとレスポンスを含む JSON ファイルに保存されます。