flawopen.com/Teardowns/cve-2025-55182-react-server-components-rce
CVE-2025-55182:React2Shell RSCのコード実行脆弱性
CVE-2025-55182はReact Server Components(RSC)のpayloadデコードにある未認証リモートコード実行の脆弱性です。Reactは欠陥を確認し、Google Threat Intelligenceはダウンローダー、バックドア、マイナーを展開する攻撃を記録しました。[1], [4], [5]
許可済みサービスの一覧を確認する受付担当者を想像してください。誤った検索では、一覧のテンプレートから継承した名前を、管理者が登録した項目として扱ってしまいます。React の修正は、要求されたモジュールの export がそのモジュール自身のプロパティかを確認します。公開アドバイザリは完全な悪用手順を明らかにしていません。影響を受けるパッケージを更新してください。[1]
主要な概念と専門用語
React Server Components (RSC)- React Server Components:サーバーレンダリングとFlightデータ交換のためのReactプロトコルとパッケージ。[1]
フレームワーク対応
- このガイドで説明する弱点の CWE 参照: CWE-502
- CISA KEV — 追加日 2025-12-05 — CVE-2025-55182
根本原因の分析 (Root Cause)
ReactはServer Function endpoint宛てpayloadのデコード不備を確認し、RSC対応だけでも影響し得ると説明しました。初回告知は詳細を伏せています。公開upstream patchはrequireModule()にown-property確認を加え、multipartエラー処理も強化します。この抜粋は具体的修正であり、脆弱性全体や攻撃連鎖の再現ではありません。[1], [2]
React2Shell の影響バージョンとデプロイ範囲
| コンポーネントまたはデプロイ | 範囲の評価 | 修正対応 |
|---|---|---|
react-server-dom-webpack、react-server-dom-parcel、react-server-dom-turbopack の 19.0、19.1.0、19.1.1、19.2.0。 | サーバー側 RSC 対応があると、Server Function エンドポイントを明示的に定義していなくてもアプリが影響を受ける可能性があります。サーバー境界が到達可能である必要があります。 | 該当するパッケージ系列を 19.0.1、19.1.2、19.2.1 以降に更新し、サーバー成果物を再ビルドして再デプロイします。 |
| 影響を受ける 15.x/16.x、または 14.3.0-canary.77 以降の canary 系列の Next.js App Router。 | 影響を受けるフレームワーク統合には脆弱な RSC パッケージが含まれます。アプリが独自の Server Function エンドポイントを定義していないことだけで安全と判断しないでください。 | 対応する系列の修正版を使用します:15.0.5、15.1.9、15.2.6、15.3.6、15.4.8、15.5.7、または 16.0.7 以降。これらは引用した勧告に記載された最低バージョンです。展開前にベンダーの現行系列を確認してください。 |
| サーバー側 RSC 対応のないクライアント専用 React アプリ。 | サーバー側のデコーダー境界がないため、文書化された CVE の対象外です。 | この構成には React2Shell のサーバーパッチは不要です。RSC やサーバーコンポーネントを導入したら再評価してください。 |
| 修正済みと報告されたデプロイ。 | マニフェストのバージョンだけでは、すべての稼働リージョン、プレビュー、worker、コンテナが修正済み成果物を使っていると確認できません。 | 本番、プレビュー、worker 環境のイメージ digest と解決済みパッケージバージョンを確認し、過去の露出期間も調査してください。 |
| 2026-01-26 の React 更新に記載された Next.js のブランチ別推奨版 | React の後日更新には、より新しいセキュリティリリースが記載されています。これらは CVE-2025-66478 を最初に修正した最小バージョンではありません。関連する RSC アドバイザリやサポート対象ブランチにより更新先は変わる場合があります。 | 関連する RSC アドバイザリ CVE-2025-55183、CVE-2025-55184、CVE-2025-67779、CVE-2026-23864 について、React は修正版として 19.0.4、19.1.5、19.2.4 を示しました。2026-01-26 付の Next.js 推奨版は、安定版 13.3.x–14.x が 14.2.35、15.0.x が 15.0.8、15.1.x が 15.1.12、15.2.x が 15.2.9、15.3.x が 15.3.9、15.4.x が 15.4.11、15.5.x が 15.5.10、16.0.x が 16.0.11、16.1.x が 16.1.5 です。これは関連問題に対する後日の案内であり、CVE-2025-66478 を修正した Next.js の最小バージョンではありません。デプロイ前に最新のベンダーアドバイザリとサポート対象ブランチを確認してください。 |
CVE-2026-23869 — RSC のサービス拒否(2026-04-08)。 | React によると、Server Function エンドポイントへの細工された HTTP リクエストは、捕捉可能なエラーが発生するまで最大約 1 分間 CPU を過剰に消費する可能性があります。影響を受ける react-server-dom-* パッケージ系列は 19.0.4、19.1.5、19.2.4 までです。 | React が示す各系列の修正版は 19.0.5、19.1.6、19.2.5 です。 |
CVE-2026-23870 — RSC のサービス拒否(2026-05-06)。 | React によると、細工された HTTP リクエストはメモリ不足例外や CPU の過剰消費を引き起こす可能性があります。影響を受ける react-server-dom-* パッケージ系列は 19.0.5、19.1.6、19.2.5 までです。 | React が示す各系列の修正版は 19.0.6、19.1.7、19.2.6 です。 |
CVE-2026-44907 — Server Functions のサービス拒否(2026-07-21)。 | React によると、細工された HTTP リクエストはメモリ不足例外や CPU の過剰消費を引き起こす可能性があります。影響を受ける react-server-dom-* パッケージ系列は 19.0.7、19.1.8、19.2.7 までです。 | React が示す各系列の修正版は 19.0.8、19.1.9、19.2.8 です。 |
ステップ・バイ・ステップの攻撃フロー
ソースコード比較:脆弱 vs 堅牢化
このupstream patchの該当箇所はモジュール自身のexportだけを返します。デコーダーの欠陥全体を再現するものでも、単独で使える修正でもありません。React Server Componentsまたは対象frameworkを更新してください。[2], [1]
ソース抜粋: React ParcelクライアントのrequireModule()メソッド
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
return moduleExports[metadata[NAME]];
}
export function requireModule<T>(metadata: ClientReference<T>): T {
const moduleExports = parcelRequire(metadata[ID /* module id */]);
if (hasOwnProperty.call(moduleExports, metadata[NAME])) {
return moduleExports[metadata[NAME]];
}
return (undefined: any);
}
エンジニアリング&システム堅牢化チェックリスト
- ✓lockfile、image、server bundleを確認します。[1], [4]
- ✓React RSC 19.0.1、19.1.2、19.2.1以降とframework修正版へ更新します。 後続の RSC アドバイザリについてはマトリクスを確認し、実際に解決された
react-server-dom-*パッケージを該当系列の最新修正版へ更新してください。フレームワークにこれらのパッケージが同梱される場合があります。[1], [4], [8], [9], [10] - ✓再ビルド・再デプロイし、WAFをpatchの代替にしません。[1]
- ✓実際の実行バージョンを検証します。[1]
- ✓未修正で公開していた場合、プロセスと通信を調査しsecretをローテーションします。[5], [6]
参考資料
- React Security Advisory — CVE-2025-55182
- React upstream patch — commit 7dc903c
- NVD — CVE-2025-55182, CWE-502 and KEV status
- Next.js Security Advisory — CVE-2025-66478
- Google Threat Intelligence — React2Shell exploitation
- CISA Known Exploited Vulnerabilities Catalog
- React セキュリティアドバイザリ — RSC の追加脆弱性
- React セキュリティアドバイザリ — CVE-2026-23869(RSC DoS)
- React セキュリティアドバイザリ — CVE-2026-23870(RSC DoS)
- React セキュリティアドバイザリ — CVE-2026-44907(Server Functions DoS)