React Server Components Flaw Lets Attackers Freeze Next.js Servers With a Single POST Request
2026/10/09 CyberSecurityNews — React Server Components に存在する、深刻度の高いサービス拒否 (DoS) の脆弱性 CVE-2026-23870 を悪用するリモートの攻撃者が、Server Function エンドポイントに細工した POST リクエストを送信し、脆弱な Next.js サーバを応答不能にする可能性がある。この脆弱性の CVSS スコアは 7.5 であり、React 19.x アプリケーションで使用される React Server Components パッケージに影響を及ぼす。対象には、Server Actions を使用する多くの Next.js 環境も含まれる。

この脆弱性の原因は、Server Action が実行される前の段階で、送信されたフォームデータを React が再構築する際の処理にある。この攻撃において、アプリケーションへの侵入や保護されたデータへのアクセスは必要とされない。
攻撃者は、サーバに大量の検証処理を繰り返し実行させることで CPU リソースを消費させ、通常の利用者への応答を停止させることができる。
すでに React は、バージョン 19.0.6/19.1.7/19.2.6 をリリースし、この問題に対処している。古いリリースを使用している組織には、可能な限り早急なアップグレードが求められる。
近年の React アプリケーションでは、フォーム送信からバックエンドの関数を直接呼び出すために Server Actions が使用されている。そのため React は、関数の実行前に HTTP リクエストを解析し、送信されたフォームフィールドを再構築する必要がある。
React のフォームデータ形式に含まれる特殊な参照が、脆弱なコードにより処理されている。その一つである $K が示すのは、ネストされたフォーム構造を再構築する必要性である。React は各 $K 参照を解決する際に、送信されたリクエスト内の全フィールドをリスト化し、その全体を走査して一致する項目を探していた。
この処理は、リクエストに大量の参照/通常のフォームフィールドが含まれる場合に大きな負荷を生む。$K 参照が一つ現れるたびに、送信されたフィールドのリスト全体が再走査される。例えば、10,000 件の参照/10,000 件のフォームフィールドを含む POST リクエストでは、約 1 億回の文字列比較が発生する可能性がある。
React Server Components の脆弱性
研究者 Simon Koeck が公開した概念実証 (PoC) が示すのは、約 900 KB のリクエストにより、この大量の処理を引き起こせることである。問題はリクエストのサイズ自身にあるわけではなく、送信されたデータ構造を処理する際に、React が繰り返し実行する処理にある。
多くの Next.js 環境は Node.js 上で動作しており、CPU 負荷の高い同期処理によってイベントループがブロックされる可能性がある。React が攻撃者の制御するフォームフィールドを走査している間、サーバは他の受信リクエストを適切な時間内に処理できなくなる恐れがある。
その結果、正規ユーザーに対して、ページの読み込み遅延/リクエストのタイムアウト/HTTP 503 エラーなどが発生する可能性がある。悪意の POST リクエストが繰り返し送信されると、アプリケーション・インスタンスが長時間利用できなくなり、ヘルスチェック/ロードバランサが異常と判断してサービスから除外する可能性もある。
この脆弱性で重要なのは、アプリケーションの Server Action のロジックが実行される前に、リクエストの解析が行われる点である。そのため、Server Action 内に実装された保護機構では、負荷の高いリクエスト解析処理を防ぐことができない。
外部公開された Server Actions が、最も攻撃を受けやすい部分である一方で、認証を必要とするアプリケーションでも、一般ユーザーが脆弱なエンドポイントにアクセスできる場合は影響を受ける可能性がある。
React のアドバイザリによると、Server Function エンドポイントに細工した HTTP リクエストを送信することで、CPU 使用率の異常な増加/メモリ不足/サーバのクラッシュを引き起こす可能性がある。NIST は、この問題を CWE-400 (制御されないリソース消費) に分類している。
CVE-2026-23870 の影響を受ける React Server Components パッケージは、以下のとおりである。
react-server-dom-webpack/react-server-dom-turbopack/react-server-dom-parcel
脆弱なバージョンは React 19.0.0~19.0.5/19.1.0~19.1.6/19.2.0~19.2.5 である。修正済みバージョンは 19.0.6/19.1.7/19.2.6 となっている。
Next.js の利用者に求められるのは、最上位の Next.js バージョンだけで判断せず、実際に解決された依存関係ツリーを確認することである。App Router/React Server Components/Server Actions を使用するアプリケーションには、フレームワークの依存関係を通じて、影響を受ける React server-dom パッケージが含まれている可能性がある。
以前に Cyber Security News は、React/Next.js に関する一連の広範な問題が、App Router を使用する環境/Server Function エンドポイントに影響を及ぼすと報じていた。このため、開発チーム/本番環境の運用チームにとって、依存関係の確認が重要となる。
すでに React は、影響を受けるフォームデータの処理経路を変更している。具体的には、ネストされた参照ごとにリスト全体を再走査する代わりに、フィールドを一度だけ走査し、処理に応じて消費する方式に修正した。これにより、CPU リソースの枯渇を引き起こしていた繰り返し処理が解消された。
開発/運用チームに求められるのは、React および関連する React Server Components パッケージを、使用中のサポート対象ブランチの修正済みリリースへ更新することである。その上で、アプリケーションの成果物を再ビルドし、影響を受けるすべての環境に再デプロイする必要がある。
また、POST リクエストのボディサイズ制限/リクエストレート制御/タイムアウトなどの、エッジとリバースプロキシの保護設定も見直す必要がある。これらの対策により攻撃のリスクは軽減できるが、脆弱性は React のリクエスト処理ロジックに存在するため、根本的な対策は React への修正の適用となる。
管理者に推奨されるのは、Server Actions を公開しているページへの異常な POST リクエストを監視することである。特に、multipart/form-data リクエストの急増/アプリケーション・トラフィックに見合わない高い CPU 使用率/リクエスト・キューの増加/ヘルスチェックの繰り返し失敗などに注意が必要である。
この記事は、React Server Components におけるリソース消費に関する欠陥 CVE-2026-23870 について解説するものです。入力されたフォームの解析処理でループが生じる仕様に原因があり、通信経路を経由した過大な計算負荷の送出に伴うシステムの応答不能/サービスの停止といった影響を受ける可能性があります。修正済みのパッケージへの更新/環境への再展開/要求上限の最適化といった対策が求められます。
You must be logged in to post a comment.