エグゼクティブサマリー
2025年12月3日、研究者らは React Server Components (RSC) で使用される Flight プロトコルにおける重大なリモートコード実行 (RCE) の脆弱性を公表しました。これらの脆弱性は CVE-2025-55182 (React) および CVE-2025-66478 (Next.js) として追跡されており、最大深刻度である CVSS 10.0 が割り当てられています。
CVE-2025-66478 は、CVE-2025-55182 の重複として却下されました。
この欠陥により、悪意のある HTTP リクエストの安全でないデシリアライゼーション (復元) を通じて、認証されていない攻撃者がサーバー上で任意のコードを実行できる可能性があります。検証の結果、このエクスプロイトはほぼ 100% の確実性を持ち、デフォルト設定に対して有効であるためコードの変更を必要としないことが示されています。2025年12月3日現在、実際の攻撃での悪用事例は報告されていません。
React はエンタープライズ環境で広く実装されており、全開発者の約 40% に利用されています。一方、Next.js は約 18%〜20% に利用されています。これにより、Next.js は React エコシステムにおける主要なサーバーサイドフレームワークとなっています。
パロアルトネットワークスの Cortex Xpanse は、私たちのテレメトリ内で 968,000 以上の React および Next.js インスタンスの存在を確認しています。
これらの脆弱性は、React 19 エコシステムおよびそれを実装するフレームワークに影響を与えます。具体的には、以下のバージョンが影響を受けます。
- React: バージョン 19.0、19.1、および 19.2
- Next.js: バージョン 15.x および 16.x (App Router)、および 14.3.0 以降の Canary ビルド
- その他のフレームワーク: React Router、Waku、RedwoodSDK、Parcel、Vite RSC プラグインなど、react-server 実装をバンドルしているあらゆるライブラリ
パロアルトネットワークスのお客様は、以下の方法で CVE-2025-55182 および CVE-2025-66478 に対する保護と緩和策を受けることができます。
- Cortex XDR および XSIAM エージェントは、多層防御アプローチを使用してエクスプロイト後の活動 (ポストエクスプロイト) から保護します。
また、パロアルトネットワークスは、以下の修正済みバージョンへ直ちにアップグレードすることを推奨します。
- React: 19.0.1、19.1.2、または 19.2.1 へのアップグレード
- Next.js: 16.0.7、15.5.7、15.4.8、15.3.6、15.2.6、15.1.9、15.0.5 を含む、最新の安定した修正済みバージョンへのアップグレード
Unit 42 インシデントレスポンスチームは、侵害への対応支援や、リスクを低減するためのプロアクティブな評価を提供します。
| 解説する脆弱性 | CVE-2025-55182, CVE-2025-66478 |
脆弱性の詳細: CVE-2025-55182 (React) および CVE-2025-66478 (Next.js)
CVE-2025-55182 (React) および CVE-2025-66478 (Next.js) は「緊急 (Critical)」(CVSS 10.0) に分類され、RSC アーキテクチャ、特に Flight プロトコルに関わる安全でないデシリアライゼーションによって引き起こされます。
これらの脆弱性は、react-server パッケージおよびその RSC Flight プロトコルの実装に存在します。これは論理的なデシリアライゼーションの欠陥であり、サーバーが RSC ペイロードを処理する方法に問題があります。
サーバーが特別に細工された不正な HTTP ペイロード (通常は POST リクエストで送信されるデータ) を受信すると、データの構造を正しく検証できません。この安全でないデシリアライゼーションにより、サーバーは攻撃者が制御するデータによってサーバー側の実行ロジックに影響を与えることを許してしまいます。
その結果 RCE が発生し、攻撃者はサーバー上で任意の特権 JavaScript コードを実行できるようになります。
攻撃ベクトルと悪用可能性
- 攻撃の複雑さ: 攻撃の複雑さは「低」です。ユーザーによる操作は不要で、権限も必要ありません (認証不要)。
- 標的となるエンドポイント: 攻撃は React Server Function エンドポイントを標的とします。
- 重要なニュアンス: アプリケーションが React Server Functions を厳密に実装または使用していない場合でも、アプリケーションが React Server Components を一般的にサポートしていれば脆弱な状態となります。
- 確実性: テストにより、エクスプロイトはほぼ 100% の確実性を持つことが示されています。
- デフォルト設定: この脆弱性はデフォルト設定に存在します。例えば、create-next-app で作成され本番用にビルドされた標準的な Next.js アプリケーションは、開発者がコードを変更していなくても悪用可能です。
影響を受ける特定のコンポーネント
一般的には React と Next.js に影響すると説明されていますが、技術的には、サーバーサイドレンダリングとモジュール読み込みを処理する特定の基盤パッケージ内に脆弱性が存在します。
影響を受けるパッケージ
以下のパッケージのバージョン 19.0.0、19.1.0、19.1.1、および 19.2.0 に脆弱性が存在します。
- react-server-dom-webpack
- react-server-dom-parcel
- react-server-dom-turbopack
影響を受けるフレームワーク実装
これらのパッケージをバンドルしているフレームワークはすべて影響を受けます。
- Next.js: バージョン 15.x および 16.x (App Router)、および 14.3.0-canary.77 以降の Canary ビルド
- その他のエコシステム: React Router、Waku、RedwoodSDK、Parcel、および Vite RSC プラグインは、脆弱な React パッケージを使用している場合、すべて影響を受けます。
一時的なガイダンス
必要な対応: 即時のパッチ適用が唯一の確実な緩和策です。
エンジニアリングチームおよびセキュリティチームは、以下の修正済みバージョンへ直ちにアップグレードする必要があります。
- React: 19.0.1、19.1.2、または 19.2.1 へのアップグレード
- Next.js: 16.0.7、15.5.7、15.4.8、15.3.6、15.2.6、15.1.9、15.0.5 を含む、最新の安定した修正済みバージョンへのアップグレード
これらの脆弱性に関する最新情報については、各ベンダーが提供するドキュメントを参照してください。
Unit 42 マネージドスレットハンティングクエリ
Unit 42 マネージドスレットハンティングチームは、Cortex XDR と以下の XQL クエリを使用して、お客様環境全体でこの CVE を悪用しようとする試みを継続的に追跡しています。Cortex XDR のお客様も、これらの XQL クエリを使用して悪用の兆候を検索できます。
以下のハンティングクエリは忠実度の高い検知ではないため、ヒットした場合は、Web サーバーが脆弱な React Server Components を運用しているかどうかを判断するために調査を行う必要があります。
|
1 2 3 4 5 6 7 8 9 10 11 |
// Description: File operations targeting potentially sensitive files or indications of exploitation of CVE-2025-55182 // Caveat 1: Next.js may still be running if a custom server.js is in use, as such the filtering of 'actor_process_command_line contains ".next"' restricts the results to 'standard' Next.js deployment and if not overly noisy we recommend running the query without it too. // Caveat 2: Vulnerable React Server Component (RSC) endpoints may be served by a wider range of JavaScript runtimes than just NodeJS (such as Bun or Deno) and we recommend re-executing the queries targeting these runtimes if they are used in your environment. config case_sensitive = false | preset=xdr_file | filter actor_process_image_name in ("node","node.exe") and actor_process_command_line contains ".next" and action_file_path ~= "(?:pwned\.txt|\.ssh[\\\/]authorized\_keys|\.aws[\\\/]credentials|gcloud[\\\/]credentials\.db|\.azure[\\\/]accessTokens\.json|2025[\-\_](?:55182|66478))" |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Description: Identifies a Node.js process directly spawning common system reconnaissance tools to gather user, network, or process information. // Caveat: May be prone to false positives. Investigate hits within the context of a NodeJS server running a version of React with vulnerable React Server Components config case_sensitive = false | preset=xdr_process | filter actor_process_image_name in ("node","node.exe") and actor_process_command_line contains ".next" and action_process_image_name in ("id","curl","curl.exe","wget","wget.exe","whoami","arp.exe","at.exe","hostname.exe","nbstat.exe","netsh.exe","netstat.exe","nslookup.exe","ping.exe","query.exe","systeminfo.exe","tasklist.exe","traceroute.exe","whoami.exe","whois.exe","quser.exe","qwinsta.exe","nltest.exe","csvde.exe","wevtutil.exe","driverquery.exe","nbtscan.exe","ntdsutil.exe","vssadmin.exe","dsquery.exe","adfind.exe","klist.exe","vssvc.exe") | comp count_distinct(action_process_image_name) as num_procs, values(action_process_image_command_line) as action_process_image_command_line by agent_hostname, actor_process_image_name, actor_process_command_line, action_process_image_name | filter num_procs > 1 |
|
1 2 3 4 5 6 7 |
// Description: Identifies a specific causality chain where Node.js spawns a shell (cmd/bash/powershell), which subsequently spawns a downloader (curl/wget). config case_sensitive = false | preset=xdr_process | filter causality_actor_process_image_name in ("node","node.exe") and causality_actor_process_command_line contains ".next" and actor_process_image_name in ("cmd.exe","powershell.exe","sh","bash","zsh") and action_process_image_name in ("curl","curl.exe","wget","wget.exe") |
結論
これらの脆弱性の重大な特徴は、確率的なエラーではなく、Flight プロトコルにおける決定論的なロジックの欠陥であるという点です。失敗する可能性のあるメモリ破損のバグとは異なり、この欠陥は実行を保証するため、攻撃者にとっては信頼性の高いシステム全体のバイパス手段となります。エンタープライズ環境における Next.js の巨大なフットプリントによって影響は増幅され、機密性の高い内部データへの直接的な経路が作られてしまいます。
究極的には、このインシデントは、最新のアーキテクチャにおけるパフォーマンスとセキュリティの間に固有の摩擦があることを強調しています。React Server Components はロジックをソースに近づけることでデータ取得と検索エンジン最適化 (SEO) を最適化しますが、同時にアタックサーフェス (攻撃対象領域) を組織の最も機密性が高く価値のあるデータに近づけることにもなります。
パロアルトネットワークスのお客様は、以下に記載されている当社の製品によってより強力に保護されています。より関連性の高い情報が入手可能になり次第、この脅威ブリーフを更新します。
CVE-2025-55182 および CVE-2025-66478 に対するパロアルトネットワークス製品の保護
パロアルトネットワークスのお客様は、さまざまな製品の保護機能とアップデートを活用して、この脅威を特定し、防御することができます。
侵害された可能性があると思われる場合、または緊急の事案がある場合は、Unit 42 インシデントレスポンスチームにご連絡いただくか、以下までお電話ください。
- 北米フリーダイヤル: +1 (866) 486-4842 (866.4.UNIT42)
- 英国: +44.20.3743.3660
- 欧州および中東: +31.20.299.3130
- アジア: +65.6983.8730
- 日本: +81.50.1790.0200
- オーストラリア: +61.2.4062.7950
- インド: 000 800 050 45107
Advanced Threat Prevention を搭載した次世代ファイアウォール
Advanced Threat Prevention セキュリティサブスクリプションを搭載した次世代ファイアウォール (NGFW) は、以下の Threat Prevention シグネチャによって攻撃のブロックを支援します: 96779 および 96780。
Cortex XDR および XSIAM
Cortex XDR および XSIAM エージェントは、多層防御アプローチを使用してエクスプロイト後の活動 (ポストエクスプロイト) から保護します。