OpenAIReact2025/12/11 0:00

Denial of Service and Source Code Exposure in React Server Components

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Server Components の DoS とソースコード露出 — 直ちにアップデートが必要

Key Points

  • DoS 脆弱性(高)
  • ソースコード露出(中)
  • 即時 19.0.4/19.1.5/19.2.4 へ更新

Summary

React Server Components に複数の新たな脆弱性が報告されました(RCE には至らない報告)。影響パッケージは react-server-dom-webpack / react-server-dom-parcel / react-server-dom-turbopack の一連で、旧パッチは不完全でした。高危険度の DoS(CVE-2025-55184, CVE-2025-67779, CVE-2026-23864, CVSS 7.5)と中程度のソースコード露出(CVE-2025-55183, CVSS 5.3)が含まれます。修正は 19.0.4 / 19.1.5 / 19.2.4 にバックポートされています。以前に 19.0.3, 19.1.4, 19.2.3 等へ更新した場合は、再度更新が必要です。

Key Points

  • 何が起きるか

    • DoS: 特殊な HTTP リクエストで Server Function を呼び出すと無限ループ・メモリ枯渇・高 CPU を引き起こす可能性。サービス拒否に繋がる。
    • ソースコード露出: 一部 Server Function が文字列化されるケースで関数本体(ハードコードされたシークレット含む)が漏洩する可能性。
    • RCE は確認されていない。React2Shell パッチは RCE 緩和に有効なまま。
  • 影響範囲

    • 影響バージョン(例): 19.0.0–19.2.3 の系列
    • 影響パッケージ: react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack
    • フレームワーク/バンドラー例: next, react-router, waku, @parcel/rsc, @vite/rsc-plugin, rwsdk
    • サーバー機能を全く使わないアプリ、または RSC をサポートしない環境は影響なし。
  • 対策(エンジニア向け即時手順)

    • 直ちにアップデート: 影響パッケージを 19.0.4、19.1.5、または 19.2.4 いずれかへ更新してください。
    • 既に 19.0.3 / 19.1.4 / 19.2.3 等に更新済みの場合は再度更新が必要。
    • デプロイ後に本番バンドルを検証し、Server Function のソースコード(ハードコードされた秘密)が含まれていないか確認する。
    • Server Function エンドポイントがある場合は、異常なリクエスト率や CPU/メモリのスパイクを監視する。
    • ホスティング側の一時緩和策に頼らず、自前でのアップデートを実施する。
  • 追加メモ

    • 追加の詳細は修正展開後に追って公開予定。脆弱性の発見は既存修正の検証過程で発生する一般的な現象です。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

React Server Componentsにおけるサービス拒否(DoS)とソースコード露出

Denial of Service and Source Code Exposure in React Server Components

発行日: December 11, 2025

作成者: The React Team

更新: January 26, 2026

セキュリティ研究者が、先週の重大な脆弱性のパッチを検証する過程で、React Server Componentsに関する追加の脆弱性を2件発見・公開しました。これらの新たな脆弱性はリモートコード実行を許すものではありません。React2Shellのパッチは依然としてリモートコード実行のエクスプロイトを緩和する効果があります。

公開された新しい脆弱性は次のとおりです。

  • Denial of Service(高):CVE-2025-55184、CVE-2025-67779、CVE-2026-23864(CVSS 7.5)
  • Source Code Exposure(中):CVE-2025-55183(CVSS 5.3)

重大度を踏まえ、直ちにアップグレードすることを推奨します。

注意: 以前に公開されたパッチには脆弱性が残っています。既に前回の脆弱性に対して更新済みの場合でも、再度更新が必要です。もし19.0.3、19.1.4、19.2.3に更新している場合、それらは不完全であり、再度アップデートする必要があります。アップグレード手順については前回の投稿の指示を参照してください。


即時対応が必要

これらの脆弱性は CVE-2025-55182 と同じパッケージおよびバージョンに存在します。対象は次のバージョンです。

19.0.0, 19.0.1, 19.0.2, 19.0.3, 19.1.0, 19.1.1, 19.1.2, 19.1.3, 19.2.0, 19.2.1, 19.2.2, 19.2.3 の以下パッケージ:

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

修正はバックポートされ、次のバージョンで対処済みです: 19.0.4、19.1.5、19.2.4。上記いずれかのパッケージを使用している場合は、いずれかの固定バージョンに直ちにアップグレードしてください。

前回と同様に、アプリのReactコードがサーバーを使用していない場合、これらの脆弱性の影響はありません。また、フレームワーク、バンドラ、またはReact Server Componentsをサポートするバンドラプラグインを使用していない場合も影響はありません。

注意: 重大なCVEが公開された後、追随する脆弱性が発見されることは一般的です。重大な脆弱性が開示されると、研究者は隣接するコードパスを精査し、最初の緩和策が回避可能かどうかを試験します。このパターンはJavaScriptに限らず業界全体で見られます。例えば Log4Shell の後に追加のCVE(1、2)が報告されました。追加の公開は煩わしく感じられることもありますが、一般的に健全な対応サイクルの表れです。


影響を受けるフレームワークとバンドラ

一部のReactフレームワークやバンドラは、脆弱なReactパッケージに依存、peer dependencyを持つ、または脆弱なパッケージを含んでいました。影響を受けるものには次が含まれます:

  • next
  • react-router
  • waku
  • @parcel/rsc
  • @vite/rsc-plugin
  • rwsdk

アップグレード手順については前回の投稿の指示を参照してください。

ホスティングプロバイダによる緩和措置

前回と同様に、複数のホスティングプロバイダと連携して一時的な緩和策を適用しています。これらに依存してアプリを保護するべきではなく、直ちにアップデートしてください。

React Native

モノレポや react-dom を使用していない React Native ユーザーは、package.json に react バージョンを固定していれば追加の手順は不要です。モノレポで React Native を使用している場合は、影響を受けるパッケージのみを更新してください(インストールされている場合):

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

これはセキュリティアドバイザリを緩和するために必要ですが、react と react-dom を更新する必要はなく、React Nativeでのバージョン不一致エラーは発生しません。詳細はこの issue を参照してください。


詳細

高重要度: 複数のDoS(CVE-2026-23864)

  • Base Score: 7.5 (High)
  • 日付: January 26, 2026

セキュリティ研究者は、React Server ComponentsにまだDoS脆弱性が残っていることを発見しました。これらの脆弱性は、Server Functionエンドポイントに対して細工されたHTTPリクエストを送信することでトリガーされ、サーバーのクラッシュ、メモリ不足例外、または過剰なCPU使用率を引き起こす可能性があります。影響は実際に呼ばれる脆弱なコードパス、アプリケーションの設定、およびアプリケーションコードに依存します。

2026年1月26日に公開されたパッチはこれらのDoS脆弱性を緩和します。

追加の修正: CVE-2025-55184に対する元の修正は不完全でした。これにより以前のバージョンが依然として脆弱な状態に残っていました。バージョン19.0.4、19.1.5、19.2.4は安全です。更新: January 26, 2026。

高重要度: DoS (CVE-2025-55184 と CVE-2025-67779)

  • Base Score: 7.5 (High)

セキュリティ研究者は、悪意のあるHTTPリクエストを任意のServer Functionsエンドポイントに送信でき、そのシリアライズ解除時にReactが無限ループを引き起こしてサーバープロセスをハングさせ、CPUを消費する可能性があることを発見しました。アプリがServer Functionエンドポイントを実装していなくても、React Server Componentsをサポートしている場合は脆弱である可能性があります。

これは、攻撃者が利用者のサービス利用を妨害(サービス拒否)し、サーバー環境にパフォーマンスへの影響を与えるベクターを生みます。今回公開されたパッチは無限ループを防ぐことで緩和します。

中程度: ソースコード露出 (CVE-2025-55183)

  • Base Score: 5.3 (Medium)

セキュリティ研究者は、脆弱なServer Functionに対して送信された悪意のあるHTTPリクエストが、Server Functionのソースコードを安全でない方法で返してしまう可能性を発見しました。エクスプロイトには、文字列化された引数を明示的または暗黙的に露出するServer Functionの存在が必要です。例:

'use server';
export async function serverFunction(name) {
  const conn = db.createConnection('SECRET KEY');
  const user = await conn.createUser(name);
  // implicitly stringified, leaked in db
  return {
    id: user.id,
    message: `Hello, ${name}!` // explicitly stringified, leaked in reply
  }
}

攻撃者は次のような漏えいを引き起こせる可能性があります:

0 : { "a" : "$@1" , "f" : "" , "b" : "Wy43RxUKdxmr5iuBzJ1pN" }
1 : { "id" : "tva1sfodwq" , "message" : "Hello, async function(a){console.log(\"serverFunction\");let b=i.createConnection(\"SECRET KEY\");return{id:(await b.createUser(a)).id,message:`Hello, ${a}!`}}!" }

今回公開されたパッチは、Server Functionのソースコードを文字列化することを防ぎます。

注意: 露出するのはソースコード内にハードコードされたシークレットのみです。process.env.SECRET のような実行時のシークレットは影響を受けません。露出するコードの範囲はServer Function内部のコードに限定されますが、バンドラのインライン量によっては他の関数が含まれる場合があります。必ず本番バンドルで検証してください。


タイムライン

  • December 3rd : Andrew MacPherson により Vercel と Meta Bug Bounty にリーク報告
  • December 4th : 初期の DoS が RyotaK により Meta Bug Bounty に報告
  • December 6th : Reactチームが両問題を確認し調査開始
  • December 7th : 初期修正を作成し、Reactチームが検証・新パッチの計画を開始
  • December 8th : 影響を受けるホスティングプロバイダとOSSプロジェクトに通知
  • December 10th : ホスティングプロバイダの緩和策実施およびパッチの検証
  • December 11th : Shinsaku Nomura により追加の DoS が Meta Bug Bounty に報告
  • December 11th : CVE-2025-55183 と CVE-2025-55184 としてパッチ公開および公開開示
  • December 11th : 内部で見つかった欠落していた DoS ケースを修正し、CVE-2025-67779 として公開開示
  • January 26th : 追加の DoS ケースが発見・修正され、CVE-2026-23864 として公開開示

帰属 (Attribution)

ソースコード露出を報告してくれた Andrew MacPherson (AndrewMohawk) に感謝します。Denial of Service 脆弱性を報告してくれたのは、GMO Flatt Security Inc の RyotaK と Bitforest Co., Ltd. の Shinsaku Nomura です。追加の DoS 脆弱性を報告してくれたのは、Winfunc Research の Mufeed VH、Joachim Viide、GMO Flatt Security Inc の RyotaK、Tencent Security YUNDING LAB の Xiangwei Zhang です。


前の記事: The React Foundation: A New Home for React

次の記事: Critical Security Vulnerability in React Server Components