React Server Components RCE脆弱性(CVE-2025-55182)への対応記録
2025年12月3日、React Server Components(RSC)とNext.jsにおいて、認証不要でリモートコード実行(RCE)が可能となる重大な脆弱性が公表されました。この記事では、この脆弱性の深刻度、CVE番号の統合経緯、そして当ブログでの対応状況について記録します。
By Toshiyuki Yoshida
脆弱性の概要
CVE-2025-55182とは
CVE-2025-55182 は、React 19 の Server Components(RSC)における「Flight」プロトコルの安全でないデシリアライゼーション(deserialize)に起因する脆弱性です。 主な特徴は次の通りです。
- CVSSスコア: 10.0(最大値)
- 影響範囲: React 19.0.0、19.1.0、19.1.1、19.2.0
- 攻撃条件: 認証不要、細工された HTTP リクエストのみで実行可能
- デフォルト設定で脆弱:
create-next-appにより作成した標準的な Next.js アプリケーションが影響を受ける
技術的な仕組み
この脆弱性は、RSC の内部通信プロトコルである「Flight」の処理において、攻撃者の制御可能なデータを適切な検証なしにデシリアライズしてしまうことに起因します。攻撃者からペイロードを含む HTTP リクエストが送信されると、サーバー側ではこれを Flight プロトコルのデータとして処理し、検証なしにデシリアライズします。この結果、任意のコードを実行される可能性があります。
重要なのは、この処理がアプリケーションの認証ロジックより前、つまり Middleware での保護より深い層で行われるため、通常の認証機構では防げないという点です。
CVE番号の統合経緯
2025 年 12 月 3 日時点では、以下の 2 つの CVE 番号で追跡されていました。
- CVE-2025-55182: React Server Components の脆弱性
- CVE-2025-66478: Next.js の脆弱性
調査の結果、Next.js の脆弱性は実質的に React の脆弱性に起因することが判明し、CVE-2025-66478は重複として却下されました。現在はCVE-2025-55182に統合されています。
この経緯は、脆弱性の根本原因が React の RSC 実装そのものにあり、Next.js はその影響を受けていたに過ぎないことを示しています。
影響を受けるバージョンと修正版
React / React-dom
| 影響を受けるバージョン | 修正済みバージョン |
|---|---|
| 19.0.0 | 19.0.1 |
| 19.1.0, 19.1.1 | 19.1.2 |
| 19.2.0 | 19.2.1 |
Next.js
| 影響を受けるバージョン | 修正済みバージョン |
|---|---|
| 15.x(全般) | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 |
| 16.x(全般) | 16.0.7 |
| 14.3.0-canary.77以降 | (14.x Stable版は影響なし) |
注: Next.js 13.x、14.x stable 版、Pages Router、Edge Runtime は影響を受けません。
実際の攻撃状況
この脆弱性は公表直後から実際に悪用されています。
- 2025 年 12 月 3 日: 脆弱性が公表される
- 同日中: 中国関連の脅威グループによる大規模な攻撃活動が観測される
- 2025 年 12 月 5 日午前 6 時(UTC)以降: Wiz のセンサーが複数の被害者を検知
この脆弱性は「React2Shell」または「React4Shell」という名称でも呼ばれ、既に実証コード(PoC)が公開されています。
当ブログでの対応状況
対応タイムライン
- 2025年12月3日: CVE-2025-55182 が公表される
- 2025年12月5日: 当ブログで修正版へのアップデート実施(v1.7.1)
実施した対応
以下のパッケージを修正版にアップデートしました。
# 実施したアップデート
React: 19.0.0 → 19.2.1
React-dom: 19.0.0 → 19.2.1
Next.js: 15.2.3 → 15.5.7
@next/mdx: 15.2.3 → 15.5.7
eslint-config-next: 15.2.3 → 15.5.7
当ブログはCVE-2025-55182に完全対応済みであり、この脆弱性の影響を受けない安全な状態です。
推奨される対応
Next.js や React を使用しているプロジェクトをお持ちの方は、以下の対応を推奨します。
1. バージョンの確認
まず現在のバージョンを確認します。
npm list next react react-dom
2. 修正版へのアップデート
該当する場合は、直ちに修正版へアップデートしてください。
# npm の場合
npm install next@latest react@latest react-dom@latest
# yarn の場合
yarn add next@latest react@latest react-dom@latest
# pnpm の場合
pnpm add next@latest react@latest react-dom@latest
3. 内部依存関係の確認
package.jsonだけでなく、ロックファイル(package-lock.json、yarn.lockなど)も確認し、内部依存関係として古いバージョンが残っていないか確認することを強く推奨します。
# ロックファイル内のReactバージョンを確認
grep -A5 '"react":' package-lock.json
grep -A5 '"next":' package-lock.json
4. デプロイ
アップデート後は速やかにビルドとデプロイを実施してください。
npm run build
# デプロイコマンドを実行
まとめ
CVE-2025-55182 は、React Server Components の根本的な脆弱性であり、 CVSS 10.0という最大の深刻度を持つ重大な問題です。デフォルト設定で脆弱であり、認証を回避して攻撃可能という特性から、速やかな対応が必要です。
当ブログでは公表から 2 日以内に対応を完了しましたが、既に実際の攻撃が観測されているため、まだ対応されていない方は最優先で対応することを強く推奨します。