2025年12月に発見されたReact Server Componentsの重大な脆弱性について

2025年12月に発見されたReact Server Componentsの重大な脆弱性について

開発
とちとち
公開日:2025/12/15
読了目安:10分で読めます

【緊急】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)

  • 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エンドポイントに送信することで、サーバー上で任意のコードを実行できます。

攻撃の特徴

  1. エクスプロイトの容易さ : 100%近い成功率
  2. 認証不要 : App Routerのあらゆるエンドポイントが標的に
  3. デフォルト設定で脆弱 : React 19とNext.jsのデフォルト構成で影響を受ける

よくある誤解

「これはプロトタイプ汚染の脆弱性である」という誤解について:

公開されているPoCコードが__proto__を使用しているため、プロトタイプ汚染と誤解されることがありますが、実際の脆弱性は JavaScriptのObjectプロトタイプに属するconstructorのようなプロパティにアクセスできること です。__proto__は単にFunction constructorへのアクセス経路の1つにすぎません。


技術的な仕組み:Flight Protocolのデシリアライゼーション

Flight Protocolとは

Flight Protocolは、React Server Componentsがクライアントとサーバー間でデータをやり取りするための仕組みです。

2つの主要なフロー:

  1. Server-to-Client Flow
    サーバーがRSCデータを小さなデータパケットにシリアライズしてストリーミング。クライアントはこれをデシリアライズしてレンダリング。

  2. Client-to-Server (Reply Flow)
    クライアントがデータをサーバーにシリアライズして送信。サーバーはこれをデシリアライズしてリクエストを処理。

脆弱性が発生する箇所

サーバーがRSCペイロードを受信すると、Flight Protocolはそれをデシリアライズし、エンコードされたデータをJavaScript構造に変換します。

問題点:
Reactのデシリアライゼーションロジックは、 オブジェクトプロパティを十分に検証せずに展開 します。これにより、攻撃者は以下のような悪意のあるキーをペイロードに挿入できます:

  • __proto__
  • constructor
  • prototype

これらのキーは、サーバー上の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. システムの侵害確認

すでに攻撃を受けている可能性がある場合:

  1. ログの確認
  • 不審なHTTPリクエスト(特にnext-actionヘッダー)
  • 異常なサーバーアクティビティ
  1. プロセスの確認
ps aux | grep -E "(wget|curl|bash)"
  1. ネットワーク接続の確認
netstat -tulpn | grep ESTABLISHED
  1. AWS認証情報の確認
  • ~/.aws/credentialsの不正アクセス
  • CloudTrailログの異常なアクティビティ
  1. マルウェアスキャン
  • クリプトマイナーの検出
  • バックドアの確認

4. IPAの情報を確認

日本国内の最新状況は、IPA(情報処理推進機構)が提供しています:

IPA セキュリティアラート:
https://www.ipa.go.jp/security/security-alert/2025/alert20251209.html

IPAでは以下の情報を提供:

  • 国内での攻撃観測状況
  • 影響を受けるバージョンの詳細
  • 推奨される対策手順
  • 関連する追加脆弱性の情報

日本国内でも攻撃が観測されており、JPCERT/CCが被害報告を受領しています。

5. 開発環境の保護

  1. 依存関係の監査
npm audit # または yarn audit
  1. CI/CDパイプラインの確認
  • 自動更新の設定
  • セキュリティスキャンの統合
  1. Dependabotの活用 (GitHub)
    自動的にセキュリティアップデートのPRを作成

6. 今後の予防策

  1. 定期的なアップデート
  • セキュリティパッチの迅速な適用
  • 依存関係の最新化
  1. セキュリティアドバイザリの購読
  • React公式ブログ
  • Next.jsセキュリティアドバイザリ
  • IPAのセキュリティアラート
  1. Defense in Depth(多層防御)
  • WAF + パッチ適用
  • ネットワークセグメンテーション
  • 最小権限の原則

まとめ

React2Shell(CVE-2025-55182)は、2021年のLog4jShell以来の 最も深刻なWeb脆弱性 の1つです。以下のポイントを押さえておきましょう:

重要なポイント

  1. CVSS 10.0の最大深刻度 - 認証不要でリモートコード実行が可能
  2. 公開から数時間で攻撃開始 - 中国国家支援のAPTグループが即座に悪用
  3. 77,000以上のIPアドレスが脆弱 - 世界規模の影響
  4. 日本国内でも被害発生 - IPAとJPCERT/CCが確認
  5. 追加の脆弱性も発見 - CVE-2025-55183、CVE-2025-55184、CVE-2025-67779
  6. WAFだけでは不十分 - パッチ適用が唯一の完全な対策

教訓

React2Shellは、以下の重要な教訓を示しています:

  1. モダンフレームワークも脆弱 : 最新技術だからといって安全とは限らない
  2. 公開から攻撃まで数時間 : パッチの迅速な適用が極めて重要
  3. サプライチェーンリスク : 依存関係の脆弱性は広範囲に影響
  4. 継続的な監視が必要 : 初期修正が不完全な場合もある(CVE-2025-67779)

参考リンク


React Server Componentsを使用しているすべての開発者とインフラ担当者は、今すぐアクションを起こしてください。この脆弱性は現在進行形で悪用されており、遅延は重大なリスクを意味します。

安全なWeb開発を。

とち
栃沢 拓実
エンジニア
はじめまして。とちと申します。 2004生まれ、出身は宮城で牛タンとずんだ餅で育ちました。東北の血が流れています。 視力は左目2.0、右目が1.5です(右目が最近下がりました。悲しい)