
React2Shellの重大な脆弱性を実証するための概念実証ツール
React2Shellの重大な脆弱性(CVE-2025-55182 / CVE-2025-66478)を許可されたローカルテスト環境のみで実証するための概念実証ツール。
CVE-2025-55182(React2Shell)は、React Server Components(RSC)"Flight" プロトコルにおける認証前のリモートコード実行(RCE)の重大な脆弱性です。別の識別子 CVE-2025-66478 は Next.js 用に割り当てられましたが、CVE-2025-55182 の重複として却下されました。両者は同じ根本原因を共有しています。
chmod +x pwn-nextjs.sh
./pwn-nextjs.sh [TARGET_URL] [COMMAND]
# 特定のURLをターゲットにする
./pwn-nextjs.sh https://vulnerable-app.example.com "whoami"
root
この脆弱性は特定の React パッケージに起因し、それらをバンドルするすべてのフレームワークに影響します。
影響を受けないもの: Next.js 13.x、Next.js 14.x 安定版リリース、Pages Router アプリケーション、Edge Runtime は影響を受けません。
RSC Flight プロトコルはクライアント-サーバー間通信のためにデータをシリアライズします。脆弱性は、サーバー側のデシリアライゼーションロジックにあり、受信ペイロードからオブジェクトのプロパティを安全でない方法で展開し、適切な検証を行いません。これにより、攻撃者はリクエストに悪意のあるキー(__proto__ や constructor など)を注入でき、プロトタイプ汚染につながります。
プロトタイプチェーンが汚染されると、サーバーは攻撃者の影響を受けた実行パスに従います。これを連鎖させてサーバー権限で任意の JavaScript コードを実行し、完全なリモートコード実行(RCE)に至ることができます。
セキュリティ研究者は、以下のような成功したエクスプロイトを観測しています:
.aws/credentials)の特定と外部持ち出しの試み。パッチ適用は必須であり、脆弱性を完全に排除する唯一の方法です。脆弱なコードパスを無効にする設定オプションはありません。
# Next.js ユーザー向け、リリーストレイン内の最新パッチ版にアップグレードしてください。
# 例:Next.js 15.5.x を使用している場合:
npm install [email protected]
# React の依存関係も更新してください:
npm install react@latest react-dom@latest
確認: package-lock.json または yarn.lock ファイルが、パッチ適用済みの react-server-dom-* パッケージバージョン(19.0.1、19.1.2、または 19.2.1)を反映していることを確認してください。
パッチ適用中の間、Web アプリケーションファイアウォール(WAF)ルールを展開してエクスプロイト試行をブロックします:
AWSManagedRulesKnownBadInputsRuleSet(v1.24+)にこの CVE のルールが含まれています。cve-canary ルールが利用可能です。注: WAF ルールは一時的で不完全な緩和策です。パッチ適用の代わりにはなりません。
ログで以下のエクスプロイト試行の兆候を確認してください:
next-action または rsc-action-id ヘッダーを持つ POST リクエスト。リクエスト本文に $@ や "status":"resolved_model" などのパターンが含まれる。whoami、id、uname)、/etc/passwd の読み取り、または /tmp/ へのファイル書き込み(例:pwned.txt)。このツールは、CVSS スコア 10.0(最大重大度) であり、国家支援による活発な悪用が行われている脆弱性を実証するものです。
覚えておいてください: このツールはパッチ適用が緊急である理由を示しています。この知識をセキュリティ向上とシステム防御に活用し、侵害に使用しないでください。すべての依存関係を上記のパッチ適用済みバージョンに更新してください。
TAHA MOUNIR
| コンポーネント | 影響を受けるバージョン | パッチ適用済みバージョン | 備考 |
|---|
| React パッケージ ( react-server-dom-webpack, -parcel, -turbopack) | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 | 上流の欠陥の原因。 |
| Next.js(App Router) | 15.x, 16.x, 14.3.0-canary.77 以降 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 | 主な影響を受けるフレームワーク。 |
| その他のフレームワーク | React Router、Waku、RedwoodJS、Parcel(@parcel/rsc)、Vite RSC プラグイン | パッチ適用済みの React パッケージ(>19.0.1, 19.1.2, 19.2.1)を使用するバージョンに更新。 | 影響を受ける React パッケージを使用している場合に脆弱。 |