
超緊急:React Server Components に CVSS 10.0 の RCE 脆弱性「React2Shell」CVE-2025-55182
これは本当にヤバい。CVSSスコアが最大値の10.0です。
2025年12月3日、React Server Components(RSC)において、認証不要でリモートコード実行(RCE)が可能な脆弱性 CVE-2025-55182 が公開されました。
セキュリティコミュニティでは「React2Shell」と呼ばれ、2021年に世界中を震撼させた Log4j の脆弱性「Log4Shell」に匹敵する深刻度として警戒されています。
脆弱性の概要
何が起きるのか
React Server Components の「Flight」プロトコルにおけるデシリアライゼーション処理の検証不足が原因です。
攻撃者は、細工した HTTP リクエストをサーバーの関数エンドポイントに送信するだけで、認証なしにサーバー上で任意の JavaScript コードを実行できてしまいます。
攻撃者 → 細工したHTTPリクエスト → サーバー → 任意のコード実行
これは「認証バイパス」ではなく、サーバーを完全に乗っ取られるレベルの脆弱性です。
技術的な詳細
React Server Components は、サーバーとクライアント間でコンポーネントのデータをやり取りする際に「Flight」というプロトコルを使用しています。
このプロトコルでは、サーバーから送られてきたデータをデシリアライズ(復元)する処理がありますが、ここで入力データの検証が不十分でした。
攻撃者は悪意のあるペイロードを含むリクエストを送信し、サーバーがそれを信頼して処理することで、任意のコードが実行されてしまいます。
影響を受けるバージョン
React パッケージ
以下のパッケージのバージョン 19.0.0、19.1.0、19.1.1、19.2.0 が影響を受けます:
react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack
影響を受けるフレームワーク・ツール
RSC を使用している以下のフレームワークも影響を受けます:
| フレームワーク | 影響を受けるバージョン |
|---|---|
| Next.js | 14.3.0-canary.77以降、15.x、16.x(App Router使用時) |
| React Router | RSC プレビュー版 |
| Expo | RSC サポート版 |
| Redwood SDK | 影響あり |
| Waku | 影響あり |
| @parcel/rsc | 影響あり |
| @vitejs/plugin-rsc | 影響あり |
特に Next.js の App Router を使用している場合は要注意です。
今すぐ行うべき対応
1. React パッケージのアップデート
修正済みバージョンにアップデートしてください:
# React 19.2.x を使用している場合
npm install react-server-dom-webpack@19.2.1
npm install react-server-dom-parcel@19.2.1
npm install react-server-dom-turbopack@19.2.1
# React 19.1.x を使用している場合
npm install react-server-dom-webpack@19.1.2
# React 19.0.x を使用している場合
npm install react-server-dom-webpack@19.0.1
2. Next.js のアップデート
Next.js を使用している場合は、以下の修正済みバージョンにアップデートしてください:
# Next.js 16系
npm install next@16.0.7
# Next.js 15系
npm install next@15.5.7
# または 15.4.8, 15.3.6, 15.2.6, 15.1.9, 15.0.5
# React も一緒に更新
npm install react@19.2.1 react-dom@19.2.1
3. 依存関係の確認
package-lock.json や yarn.lock を確認し、古いバージョンの RSC パッケージが残っていないか確認してください:
# 脆弱なパッケージがないか確認
npm ls react-server-dom-webpack
npm ls react-server-dom-parcel
npm ls react-server-dom-turbopack
ロックファイルに古いバージョンが残っている場合は、再生成が必要です:
rm -rf node_modules package-lock.json
npm install
4. WAF での保護
すぐにアップデートできない場合は、WAF(Web Application Firewall)でのブロックを検討してください。
AWS WAF や F5 などのプロバイダーは、この脆弱性に対応したシグネチャを提供しています。
悪用状況
JPCERT/CC によると、2025年12月4日時点で日本国内での悪用は確認されていませんが、海外のセキュリティベンダーからは、この脆弱性の悪用を試みる通信が確認されたとの報告があります。
今後、悪用が拡大する可能性が非常に高いです。
このブログへの影響
このブログは Next.js 16 で構築されていますが、現時点で以下の理由により直接的な影響は限定的です:
- Server Actions を使用した機密性の高い処理を行っていない
- 静的サイトとして生成しており、動的な RSC 処理が少ない
しかし、念のため Next.js を最新版にアップデートしました。
npm list next
# → next@16.0.7 (修正済みバージョン)
なぜこれほど深刻なのか
CVSS 10.0 の意味
CVSS(Common Vulnerability Scoring System)は脆弱性の深刻度を0.0〜10.0で評価するシステムです。
10.0は文字通り最大値であり、以下の条件をすべて満たす脆弱性に付与されます:
- 攻撃の容易さ: ネットワーク経由で、認証なしに、ユーザー操作なしで攻撃可能
- 影響の大きさ: 機密性・完全性・可用性のすべてに壊滅的な影響
今回の CVE-2025-55182 は、まさにこの条件を満たしています。
RCE(リモートコード実行)の恐ろしさ
RCE 脆弱性があると、攻撃者は以下のことが可能になります:
- サーバー上の全データの読み取り・改ざん・削除
- データベースへの不正アクセス
- マルウェアのインストール
- ランサムウェア攻撃の踏み台化
- 他システムへの攻撃の中継点として悪用
サーバーが完全に乗っ取られると考えてください。
教訓
1. Server Components は便利だが、攻撃対象面も増える
RSC は開発者体験を大幅に向上させますが、サーバーサイドで JavaScript を実行するため、攻撃対象面(Attack Surface)が増加します。
2. デシリアライゼーション脆弱性は致命的
Java の Log4j(CVE-2021-44228)でも同様でしたが、信頼できないデータのデシリアライゼーションは非常に危険です。
3. セキュリティアップデートは最優先
「動いているから触らない」は通用しません。 セキュリティアップデートは最優先で適用する必要があります。
まとめ
CVE-2025-55182(React2Shell)は、React エコシステムにおける史上最悪レベルの脆弱性です。
今すぐ以下を確認してください:
- React Server Components を使用しているか確認
- 使用している場合、バージョンを確認
- 影響を受けるバージョンの場合は今すぐアップデート
- Next.js を使用している場合も同様に確認・アップデート
「週明けに対応しよう」ではなく、今すぐ対応してください。 CVSS 10.0 の脆弱性は、それほど緊急性が高いものです。