
2025年12月に発見されたReact Server Componentsの重大な脆弱性について
開発目次
【緊急】React Server Componentsに最大深刻度CVSS 10.0の脆弱性「React2Shell」- Log4j以来の危機
2025年12月、Web開発界に激震が走りました。Reactの最新機能であるReact Server Componentsに、**CVSS 10.0(最大深刻度)**の脆弱性が発見されたのです。この脆弱性は「React2Shell」(CVE-2025-55182)と命名され、公開からわずか数時間で中国国家支援のAPTグループによる攻撃が開始されるという、2021年のLog4jShell以来の深刻なセキュリティインシデントとなっています。
本記事では、React2Shellの技術的詳細、実際の攻撃状況、そして後続で発見された関連脆弱性について、最新情報を整理してお伝えします。
目次
- 脆弱性の概要
- CVE-2025-55182(React2Shell)の詳細
- 技術的な仕組み:Flight Protocolのデシリアライゼーション
- タイムライン:発見から大規模攻撃まで
- 実際の攻撃状況
- 追加で発見された脆弱性(CVE-2025-55183、CVE-2025-55184、CVE-2025-67779)
- 対策方法
- まとめ
脆弱性の概要
CVE-2025-55182(React2Shell)
- CVSS スコア: 10.0(Critical - 最大深刻度)
- 脆弱性タイプ: 認証不要のリモートコード実行(RCE)
- 影響範囲: React Server Componentsを使用するすべてのアプリケーション
- 発見者: Lachlan Davidson
- 公開日: 2025年12月3日
影響を受けるバージョン
React関連パッケージ:
- react-server-dom-webpack: 19.0、19.1.0、19.1.1、19.2.0
- react-server-dom-parcel: 同上
- react-server-dom-turbopack: 同上
主要フレームワーク:
- Next.js: 14.3.0-canary.77以降のバージョン
- React Router
- Waku: 0.27.2以前
- Expo
- Redwood SDK
脆弱性の深刻度
この脆弱性がCVSS 10.0という最大スコアを付与された理由:
- 認証不要: 攻撃者はログインや特別な権限が不要
- ユーザー操作不要: 自動化された攻撃が可能
- リモート実行: インターネット経由で攻撃可能
- 完全な制御: サーバー上で任意のコードを実行可能
CVE-2025-55182(React2Shell)の詳細
脆弱性の本質
React2Shellは、React Server ComponentsのFlight Protocolにおける安全でないデシリアライゼーションによって引き起こされます。攻撃者は特別に細工したHTTPリクエストをServer Functionエンドポイントに送信することで、サーバー上で任意のコードを実行できます。
攻撃の特徴
- エクスプロイトの容易さ: 100%近い成功率
- 認証不要: App Routerのあらゆるエンドポイントが標的に
- デフォルト設定で脆弱: React 19とNext.jsのデフォルト構成で影響を受ける
よくある誤解
「これはプロトタイプ汚染の脆弱性である」という誤解について:
公開されているPoCコードが
__proto__を使用しているため、プロトタイプ汚染と誤解されることがありますが、実際の脆弱性はJavaScriptのObjectプロトタイプに属するconstructorのようなプロパティにアクセスできることです。__proto__は単にFunction constructorへのアクセス経路の1つにすぎません。
技術的な仕組み:Flight Protocolのデシリアライゼーション
Flight Protocolとは
Flight Protocolは、React Server Componentsがクライアントとサーバー間でデータをやり取りするための仕組みです。
2つの主要なフロー:
-
Server-to-Client Flow
サーバーがRSCデータを小さなデータパケットにシリアライズしてストリーミング。クライアントはこれをデシリアライズしてレンダリング。 -
Client-to-Server (Reply Flow)
クライアントがデータをサーバーにシリアライズして送信。サーバーはこれをデシリアライズしてリクエストを処理。
脆弱性が発生する箇所
サーバーがRSCペイロードを受信すると、Flight Protocolはそれをデシリアライズし、エンコードされたデータをJavaScript構造に変換します。
問題点:
Reactのデシリアライゼーションロジックは、オブジェクトプロパティを十分に検証せずに展開します。これにより、攻撃者は以下のような悪意のあるキーをペイロードに挿入できます:
__proto__constructorprototype
これらのキーは、サーバー上のJavaScriptオブジェクトの基本的な動作を変更し、最終的に任意のコード実行を可能にします。
攻撃シナリオの例
POST /api/server-action HTTP/1.1 Content-Type: text/plain next-action: <action-id> ["$","constructor","prototype",{"value":"malicious code"}]
このような細工されたリクエストにより、サーバー側で任意のコードを実行できます。
タイムライン:発見から大規模攻撃まで
発見から公開まで
| 日付 | 出来事 |
|---|---|
| 2025年11月29日 | Lachlan DavidsonがMeta Bug Bountyに報告 |
| 11月30日 | Metaセキュリティ研究者が確認、React Teamが修正開始 |
| 12月1日 | 修正完了、ホスティングプロバイダーとの調整開始 |
| 12月3日 | 修正版をnpmに公開、CVE-2025-55182として公開 |
公開後の展開
| 日付 | 出来事 |
|---|---|
| 12月3日 | 公開から数時間以内に中国APTグループによる攻撃開始 |
| 12月4日 | 複数のPoCが公開される |
| 12月5日 | 攻撃試行が急増、UTC 6:00から複数の被害者が侵害される |
| 12月5日 | CISAがKnown Exploited Vulnerabilities Catalogに追加 |
| 12月6日 | Shadow Serverが77,664のIPアドレスが脆弱であると報告 |
| 12月8日 | 中国の脅威アクターによる積極的な悪用をRecorded Futureが報告 |
| 12月9日 | IPA(情報処理推進機構)が注意喚起、日本国内でも被害報告 |
| 12月11日 | 追加の脆弱性(CVE-2025-55183、CVE-2025-55184)が公開 |
実際の攻撃状況
中国国家支援のAPTグループによる攻撃
確認された攻撃グループ:
- Earth Lamia (中国国家安全部と関連)
- Jackpot Panda
- UNC5174 (中国国家支援の脅威アクター)
被害規模
- 77,000以上のIPアドレスが脆弱性に対して脆弱
- 30以上の組織がすでに侵害されたことを確認
- 複数セクターにわたる被害(金融、医療、テクノロジーなど)
- 日本国内でもJPCERT/CCが被害報告を受領
攻撃手法
1. 初期偵察
攻撃者はまずターゲットがハニーポットでないことを確認:
コマンドの実行whoami- bashでの乗算実行
- ランダム文字列のMD5/Base64ハッシュ計算
2. ペイロード展開
確認後、以下のようなマルウェアをダウンロード・実行:
- Cobalt Strike beacons(Cross C2で生成)
- Nezha
- Fast Reverse Proxy (FRP)
- Sliver ペイロード
- Secret-Hunter(認証情報窃取)
- Mirai/Gafgyt 亜種
- クリプトマイナー
- RondoDox ボットネット
3. 侵害後の活動
- AWS設定ファイルや認証情報の窃取
- クラウドインスタンスメタデータの特定
- 永続的なバックドアの設置
- 横展開の試行
Cloudflareへの影響
React2Shellに対する緩和措置の影響で、2025年12月5日にCloudflareで大規模な障害が発生。この脆弱性がいかにWeb全体に影響を与えているかを示す事例となりました。
追加で発見された脆弱性
React2Shellの修正パッチをセキュリティ研究者が調査する過程で、さらに3つの脆弱性が発見されました。
CVE-2025-55183(ソースコード露出)
- CVSS スコア: 5.3(Medium)
- 影響: Server Functionのコンパイル済みソースコードが露出
- リスク:
- ビジネスロジックの漏洩
- コード内にハードコードされたシークレット(環境変数ではなく)の露出
発見者: RyotaK (GMO Flatt Security Inc.)、Andrew MacPherson
CVE-2025-55184(サービス拒否)
- CVSS スコア: 7.5(High)
- 影響: サーバープロセスが無限ループでハング、CPU消費
- 特徴:
- 認証不要でApp Routerの任意のエンドポイントが標的に
- 将来のHTTPリクエストが処理不能に
CVE-2025-67779(DoSの拡張)
- 経緯: CVE-2025-55184の初期修正が不完全だったため、追加のCVEが発行
- 影響: バージョン 19.0.2、19.1.3、19.2.2 を使用している場合も脆弱
- 教訓: 2回のパッチ適用が必要となったケースも
影響を受けるバージョン
これらの脆弱性は、CVE-2025-55182と同じバージョンに存在:
- 19.0.0、19.0.1、19.1.0、19.1.1、19.1.2、19.2.0、19.2.1
修正バージョン
React:
- 19.0.3、19.1.4、19.2.3 以降
Next.js:
- 14.2.35、15.0.7、15.1.11、15.2.8、15.3.8、15.4.10、15.5.9、16.0.10 以降
対策方法
1. 即座のアップデート(最優先)
唯一の完全な対策は、パッチが適用されたバージョンへのアップグレードです。
React
npm update react react-dom # または yarn upgrade react react-dom
最新の安全なバージョン:19.0.3、19.1.4、19.2.3以降
Next.js
npm update next # または yarn upgrade next
対応バージョン:15.0.7以降の各メジャーバージョン
2. WAFルールの活用(一時的な緩和策)
主要クラウドプロバイダーは保護ルールを展開していますが、WAFだけでは不十分です。
Azure WAF
カスタムルールの例:
に含まれる危険なパターンを検出:PostArgs
,constructor
,__proto__
,prototype_response
ヘッダーの存在確認next-action
Cloudflare
すべてのWAF顧客は自動的に保護されています。
Vercel
グローバルにWAFルールを展開済み。12月5日に追加の攻撃パターンをカバーするルールを更新。
Google Cloud
Cloud ArmorのCVE-canary WAFルールを使用。
重要な注意点:
- WAFはバイパス可能な場合があります
- 最小限の実行可能なエクスプロイトは
を必要としません__proto__ - パッチ適用が唯一の完全な対策です
3. システムの侵害確認
すでに攻撃を受けている可能性がある場合:
-
ログの確認
- 不審なHTTPリクエスト(特に
ヘッダー)next-action - 異常なサーバーアクティビティ
- 不審なHTTPリクエスト(特に
-
プロセスの確認
ps aux | grep -E "(wget|curl|bash)" -
ネットワーク接続の確認
netstat -tulpn | grep ESTABLISHED -
AWS認証情報の確認
の不正アクセス~/.aws/credentials- CloudTrailログの異常なアクティビティ
-
マルウェアスキャン
- クリプトマイナーの検出
- バックドアの確認
4. IPAの情報を確認
日本国内の最新状況は、**IPA(情報処理推進機構)**が提供しています:
IPA セキュリティアラート:
https://www.ipa.go.jp/security/security-alert/2025/alert20251209.html
IPAでは以下の情報を提供:
- 国内での攻撃観測状況
- 影響を受けるバージョンの詳細
- 推奨される対策手順
- 関連する追加脆弱性の情報
日本国内でも攻撃が観測されており、JPCERT/CCが被害報告を受領しています。
5. 開発環境の保護
-
依存関係の監査
npm audit # または yarn audit -
CI/CDパイプラインの確認
- 自動更新の設定
- セキュリティスキャンの統合
-
Dependabotの活用(GitHub)
自動的にセキュリティアップデートのPRを作成
6. 今後の予防策
-
定期的なアップデート
- セキュリティパッチの迅速な適用
- 依存関係の最新化
-
セキュリティアドバイザリの購読
- React公式ブログ
- Next.jsセキュリティアドバイザリ
- IPAのセキュリティアラート
-
Defense in Depth(多層防御)
- WAF + パッチ適用
- ネットワークセグメンテーション
- 最小権限の原則
まとめ
React2Shell(CVE-2025-55182)は、2021年のLog4jShell以来の最も深刻なWeb脆弱性の1つです。以下のポイントを押さえておきましょう:
重要なポイント
- CVSS 10.0の最大深刻度 - 認証不要でリモートコード実行が可能
- 公開から数時間で攻撃開始 - 中国国家支援のAPTグループが即座に悪用
- 77,000以上のIPアドレスが脆弱 - 世界規模の影響
- 日本国内でも被害発生 - IPAとJPCERT/CCが確認
- 追加の脆弱性も発見 - CVE-2025-55183、CVE-2025-55184、CVE-2025-67779
- WAFだけでは不十分 - パッチ適用が唯一の完全な対策
教訓
React2Shellは、以下の重要な教訓を示しています:
- モダンフレームワークも脆弱: 最新技術だからといって安全とは限らない
- 公開から攻撃まで数時間: パッチの迅速な適用が極めて重要
- サプライチェーンリスク: 依存関係の脆弱性は広範囲に影響
- 継続的な監視が必要: 初期修正が不完全な場合もある(CVE-2025-67779)
参考リンク
- React公式ブログ - Critical Security Vulnerability
- IPA セキュリティアラート
- JPCERT/CC 注意喚起
- Wiz Blog - React2Shell Deep Dive
- AWS Security Blog - China-nexus Exploitation
React Server Componentsを使用しているすべての開発者とインフラ担当者は、今すぐアクションを起こしてください。この脆弱性は現在進行形で悪用されており、遅延は重大なリスクを意味します。
安全なWeb開発を。
栃沢 拓実
エンジニア
はじめまして。とちと申します。 2004生まれ、出身は宮城で牛タンとずんだ餅で育ちました。東北の血が流れています。 視力は左目2.0、右目が1.5です(右目が最近下がりました。悲しい)