React Server ComponentsにDoS脆弱性 CVE-2026-23869

セキュリティニュース

投稿日時: 更新日時:

React Server ComponentsにDoS脆弱性 CVE-2026-23869

Reactチームは2026年4月、React Server Componentsに対するサービス不能、DoSの脆弱性 CVE-2026-23869 を公表しました。影響を受けるのは react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack で、細工したHTTPリクエストをServer Functionエンドポイントに送ることで、サーバー側で最大1分程度の過剰なCPU使用を引き起こし、最終的に例外が発生する可能性があると説明されています。GitHub Advisoryでは深刻度はHigh、CVSS v3.1は7.5です。

何が起きたか

今回の問題は、認証不要で送れるHTTPリクエストを悪用して、React Server ComponentsのServer Functionエンドポイントに負荷を集中させられる点にあります。Reactの公式アドバイザリでは、細工したリクエストのペイロードがデシリアライズされる過程で過剰なCPU消費が発生すると説明しています。Next.js側のアドバイザリでも、App RouterのServer Functionエンドポイントに対して特別に細工したHTTPリクエストを送ることで、未修正環境ではDoSに至ると案内しています。

対象バージョン

React本体の一次情報では、

影響を受けるのは react-server-dom-webpackreact-server-dom-parcelreact-server-dom-turbopack の 19.0.0 から 19.0.4、19.1.0 から 19.1.5、19.2.0 から 19.2.4 までです。

修正版は 19.0.5、19.1.6、19.2.5 です。Reactチームは該当パッケージを利用している場合、修正版へ直ちに更新するよう勧告しています。

下流への影響として、Next.jsも別途アドバイザリを公開しています。

こちらは next パッケージの影響範囲を Next.jsでは、バージョン13.0.0以上15.5.15未満の系列と、16.0.0以上16.2.3未満の系列が影響対象です。

修正版は 15.5.15 と 16.2.3 です。

原因

原因は、React Flightのデシリアライズ処理における循環参照への保護不足です。Reactの修正コミットでは [Flight] Avoid consuming cyclic models multiple times とされており、MapSetIterator を初期化する前に $$consumed を先に設定し、循環参照がある場合に同じモデルを再度消費しないよう順序を改めています。コード上のコメントでも、cyclic reference の場合に再消費を防ぐため、この処理を先に行う必要があると明記されています。