React Server Componentsの脆弱性、1回のリクエストでNext.jsサーバーを停止させる恐れ

React 19の特定の脆弱なリリースを使用するReact Server Componentsの環境で、セキュリティ上の脆弱性が確認されました。

Cybersecurityconsulting

攻撃者はこの欠陥を悪用し、細工したHTTP POSTリクエストによってサービス拒否(DoS)状態を引き起こすことができます。詳細はCVE-2026-23870として公開されています。

React Server Componentsの脆弱性

この脆弱性はCVE-2026-23870およびGHSA-rv78-f8rc-xrxhとして追跡されており、重大度は「高」です。Next.jsなどのフレームワークが利用するReact Server Componentsのパッケージが影響を受けます。

Metaは、この欠陥にCVSSスコア7.5を割り当てました。攻撃者はネットワーク経由で、低い攻撃条件の複雑さで悪用できます。特権やユーザー操作は不要で、可用性に重大な影響を及ぼす可能性があります。

脆弱性の原因は、ReactによるServer Actionsの処理にあります。この機能は、フォーム送信時にサーバー側の関数を呼び出すものです。Reactはアクションを実行する前に、生のHTTPリクエストから、送信されたマルチパートのフォームデータを再構築します。

研究者のSimonkoeck氏によると、攻撃者は$K参照型を悪用できます。この参照型は、埋め込まれた、あるいは入れ子になったフォームデータ構造を解決するようReactに指示するものです。

影響を受けるコードは、$K参照のたびに、送信されたすべてのフォームフィールドの完全なリストを作成します。そのうえで、一致するフィールドを探すため、この全リストを走査します。

この処理は二次的(2乗)な計算量となります。n個の細工された参照とn個のフォームフィールドを含むリクエストでは、約n²回の文字列比較が発生しかねません。

たとえば、10,000個の$K参照と10,000個のダミーフィールドを含む約900KBのリクエストで、約1億回の照合が生じる可能性があります。

Node.jsは通常、JavaScriptのリクエスト処理を単一のイベントループスレッドで行います。このため、過剰なCPU負荷によって他のリクエストが阻害されます。パースが完了するまで、ページやAPI、追加のServer Action呼び出しが停止したり、タイムアウトしたりする恐れがあります。

脆弱なデシリアライズ処理は、Server Actionに対するアプリケーションレベルの認可チェックより前に実行されます。そのため、影響を受けるServer Actionのエンドポイントが公開ページからアクセス可能であれば、攻撃者は認証なしで攻撃できる可能性があります。

攻撃にはServer Actionの識別子が必要ですが、この識別子は、クライアントのブラウザーに送られるレンダリング済みHTMLやJavaScriptアセットに含まれていることが多くあります。したがって、単純なServer Actionを含む公開ページであれば、攻撃対象領域として十分な可能性があります。

この問題は、リソースの無制限な消費を意味するCWE-400に分類されています。NISTの脆弱性レコードによると、悪意あるHTTPリクエストにより、過剰なCPU使用、メモリ不足、サーバークラッシュが発生する可能性があります。

影響を受けるパッケージ

脆弱なパッケージは次のとおりです。

  • 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です。

React Server ComponentsとServer Actionsを使用するNext.jsアプリケーション、特に脆弱なReact 19の依存関係で稼働している組織は、リクエストサイズの制限や認証、CSRF対策、レート制限だけに頼るべきではありません。負荷の高いパース処理はアクションレベルのチェックより前に行われ、比較的小さなリクエストでも引き起こせるためです。

この脆弱性に対処するため、MetaはReactのバージョン19.0.6、19.1.7、19.2.6でパッチを公開しました。修正では、パース方式を変更しています。入れ子の$K参照ごとに全体の走査をやり直すのをやめ、共通の走査でフィールドを処理するようにしました。これにより、CPU使用率の急上昇を招いていた繰り返しの走査がなくなります。

各チームは、ロックファイルと本番ビルドを速やかに点検し、React Server Componentsの依存関係を修正版へ更新したうえで、アプリケーションを再ビルドして再デプロイしてください。

あわせてセキュリティチームは、Server Actionsをホストするルートに対する異常なマルチパートPOSTの通信を監視してください。特に、フォームフィールドの数や入れ子のシリアライズ参照の数が異常に多いリクエストの集中に注意が必要です。

Cybersecurityconsulting

影響が出る前にサイバー脅威を阻止し、MTTRを21分短縮。ANYRUNのサンドボックスをSOCに導入。

翻訳元: https://gbhackers.com/react-server-components-vulnerability/

本記事は gbhackers.com の記事を翻訳・要約したものです。