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

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

開発
とち
とち
公開日:2025/12/12
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の技術的詳細、実際の攻撃状況、そして後続で発見された関連脆弱性について、最新情報を整理してお伝えします。

目次

  1. 脆弱性の概要
  2. CVE-2025-55182(React2Shell)の詳細
  3. 技術的な仕組み:Flight Protocolのデシリアライゼーション
  4. タイムライン:発見から大規模攻撃まで
  5. 実際の攻撃状況
  6. 追加で発見された脆弱性(CVE-2025-55183、CVE-2025-55184、CVE-2025-67779)
  7. 対策方法
  8. まとめ

脆弱性の概要

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
      ヘッダー)
    • 異常なサーバーアクティビティ
  2. プロセスの確認

    ps aux | grep -E "(wget|curl|bash)"
  3. ネットワーク接続の確認

    netstat -tulpn | grep ESTABLISHED
  4. AWS認証情報の確認

    • ~/.aws/credentials
      の不正アクセス
    • CloudTrailログの異常なアクティビティ
  5. マルウェアスキャン

    • クリプトマイナーの検出
    • バックドアの確認

4. IPAの情報を確認

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

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

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

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

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

5. 開発環境の保護

  1. 依存関係の監査

    npm audit # または yarn audit
  2. CI/CDパイプラインの確認

    • 自動更新の設定
    • セキュリティスキャンの統合
  3. Dependabotの活用(GitHub)
    自動的にセキュリティアップデートのPRを作成

6. 今後の予防策

  1. 定期的なアップデート

    • セキュリティパッチの迅速な適用
    • 依存関係の最新化
  2. セキュリティアドバイザリの購読

    • React公式ブログ
    • Next.jsセキュリティアドバイザリ
    • IPAのセキュリティアラート
  3. 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です(右目が最近下がりました。悲しい)