Reactの新たな脆弱性:アップデートしないとシャットダウンの危機

あなたがReact2Shellの深刻な脆弱性を修正したと思った矢先、新たに2つのエクスプロイトが登場し、あなたのサーバーをクラッシュさせ、コードを露出させる脅威となっています。このサービス拒否攻撃とソースコードの漏洩が、今すぐあなたの注意を必要とする理由です。

Stork.AI
Hero image for: Reactの新たな脆弱性:アップデートしないとシャットダウンの危機
💡

TL;DR / Key Takeaways

あなたがReact2Shellの深刻な脆弱性を修正したと思った矢先、新たに2つのエクスプロイトが登場し、あなたのサーバーをクラッシュさせ、コードを露出させる脅威となっています。このサービス拒否攻撃とソースコードの漏洩が、今すぐあなたの注意を必要とする理由です。

デジャヴ:なぜReactは再び警鐘を鳴らしているのか

React開発者は、重要なリモートコード実行バグの修正に raced を終えたばかりですが、今再び高い警戒が求められています。React2Shell 脆弱性(CVE-2025-55182として追跡されています)は、デフォルトのReact Server Components設定に対する認証なしのRCEでエコシステムを驚かせ、ほぼ100%の攻撃成功率を誇ります。攻撃者は迅速に行動し、脆弱性が公開された際にCobalt Strikeビコーンやクリプトマイナー、EtherRATやNoodle RATのようなRATを投入しました。

React2Shellのパッチは2025年12月3日にリリースされ、チームはNext.js、Node.jsバックエンド、カスタムReactサーバーのバージョンを引き上げるのに追われました。多くの企業はこれを「すべてを中断する」事態と捉え、機能開発よりも依存関係のアップグレードを優先しました。一瞬、最悪の事態が過ぎ去ったかのように見えました。

数日後、続編が登場しました。研究者たちとReactチームが元の修正を探る中で、同じReactサーバーコンポーネントの「フライト」プロトコルに2つの新たな脆弱性を発見しました。これらの発見は現在、CVE-2025-55183、CVE-2025-55184、および関連する内部ケースであるCVE-2025-67779を持っています。

両方の新しい問題は、同じクラスのターゲットに影響を与えています。具体的には、react-server-dom-webpack 19.0.0~19.2.0などのReact 19.xパッケージおよびデフォルトでRSCを埋め込むフレームワークが含まれます。そのリストには以下が含まれます: - Next.js - react-router - Waku - @parcel/rsc - @vitejs/plugin-rsc - RWSdk

セキュリティチームは現在、迅速なパッチサイクルに直面しています。まず、重大なリモートコード実行(RCE)により緊急アップグレードが強いられました。そして、わずか1週間後、組織は別の依存関係の更新を行い、製品ビルドを再テストし、再デプロイしなければなりません—再び。

これらの新しい脆弱性はリモートコード実行を可能にするものではありませんが、それでも深刻なものと見なされます。1つの DoS 脆弱性は、高い深刻度でCVSS 7.5に評価されており、攻撃者が単一のPOSTリクエストを発信することでReactサーバー上で無限ループを引き起こし、他のすべてのトラフィックをブロックします。このプロセスが回り続ける間、可用性はゼロに低下します。

二つ目の欠陥は、別の些細なPOSTリクエストを通じてサーバーアクションのソースコードを露呈させます。深刻度は「中程度」に位置づけられますが、それらのアクション内にあるハードコーディングされた秘密、トークン、またはデータベースの認証情報は即座に奪取される対象となります。設定ミスのあるアプリケーションにおいては、「中程度」が壊滅的な事態にエスカレートする可能性があります。

サーバーを殺す無限ループ

イラスト:サーバーを殺す無限ループ
イラスト:サーバーを殺す無限ループ

Reactの2番目の新たな脆弱性は、コード実行ではなく可用性を脅かします。CVE-2025-55183は、CVSS 7.5の高危険度サービス妨害バグであり、Reactサーバーコンポーネントに影響を与えます。シェルアクセスもデータの流出もなく、ただ応答を止める死んだアプリケーションです。

攻撃者は認証情報、特別なインフラ、または巧妙なタイミングを必要としません。RSCエンドポイントへの一つの未認証のPOSTリクエストで、Reactサーバー内で無限ループを引き起こすことができます。そこからプロセスは永遠に回転し続け、CPUサイクルを消費しながら、すべての新しいリクエストが行列に並び、サービス全体が事実上停止してしまいます。

負荷がかかると、その動作は煩わしいものから壊滅的なものへとエスカレートします。ループがメインのReactサーバープロセス内で実行されるため、イベントループを独占し、他のすべてのハンドラーを飢餓状態に陥れます。新しいHTTPリクエストが積み重なり、タイムアウトが発生し、ユーザーは空白のページや失敗したAPI呼び出し、またはフレームワークレベルの500エラーを目にします。

最新のReactスタックでは、React Server Componentsに依存するアプリはすべて危険にさらされています。これには、Next.js、react-server-dom-webpackを使用したカスタムRSCセットアップ、実験的なRSC対応ルーターが含まれます。もしデプロイメントが少数のNode.jsワーカーを通じてトラフィックをルーティングしている場合、各ワーカーごとに巧妙に作成された1つのPOSTリクエストが、全体のプールをダウンさせる可能性があります。水平スケーリングは、攻撃者がインスタンス数に匹敵するまでしか効果がありません。

研究者のRyotaK(GMOフラットセキュリティ)と野村晋作(Bitforest)は、バグを発見し報告しました。この関連する内部ケースは後にCVE-2025-67779としてカタログ化されました。彼らの研究は、React Server Componentsの「Flight」データパイプラインが、信頼できない入力を解析する際にいかに脆弱であるかを示しています。JSXのスイートの下では、RSCは従来のAPIの表面のように強化されていない独自のストリーミングプロトコルに依存しています。

無限ループは、RSCデータプロセッサを決して脱出できない状態に追い込む、不正なフライトペイロードから生じます。サーバーは、不正な入力を拒否したり、タイムアウトで処理を中断する代わりに、同じ論理パスを無限に歩き続けます。この論理エラーは、単一のネットワークパケットを持続的な可用性障害に変えてしまいます。

先週のReact2Shellインシデントと合わせて、CVE-2025-55183はパターンを浮き彫りにしています。Reactのサーバーサイドの内部は、今やセキュリティの影響圏内に完全に位置しています。"RSCエンドポイント"を単なるフレームワークの一部と見なし、公共のインターネットにさらされる状態にしているアプリは、そのリスクをデフォルトで引き継ぐことになります。

あなたのサーバーのソースコードが手に入ります

中程度の深刻度は心地よく聞こえますが、サーバーが独自の設計図を配布し始めると状況は変わります。CVE-2025-55184は再びReact Server Componentsを標的にし、今回は同じFlightプロトコルを悪用してサーバーアクションの裏側を明らかにします。XSSチェーンも、SSRFの体操も必要なく、デフォルトのReact 19.xセットアップに対して単なる認証されていないPOSTリクエストが行われるだけです。

このバグは、Reactが工夫されたフライトペイロードをどのようにデシリアライズして応答するかに潜んでいます。攻撃者は、サーバーに対してサーバーアクションをシリアライズするように要求し、その出力だけでなく生のソースコードも返すようにすることができます。React自身のアドバイザリーである「Reactサーバーコンポーネントにおけるサービス拒否とソースコードの露出」は、これがreact-server-dom-webpack 19.0.0–19.2.0や、それを埋め込んだフレームワークに対して有効であることを確認しています。

表面的には、ソースコードの露出はRCEやCVSS 7.5のDoSクレーターほど劇的ではないように感じられます。しかし、サーバーの行動は、多くの場合、秘密のゴミ捨て場としての役割を果たします。特に急いで書かれたコードや旧式のコードベースではそうです。一度攻撃者がそのコードを読み取ることができれば、あなたがハードコーディングしたものはすべて戦利品となります。

ハードコーディングされた秘密情報には、以下がよく含まれます: - サードパーティサービスのAPIキー(Stripe、Twilio、SendGrid) - データベースのユーザー名とパスワード - JWT署名秘密またはOAuthクライアント秘密 - 内部サービスのエンドポイントとアクセストークン

この脆弱性は、サーバーサイドコードを安全な金庫として扱っていたチームを特に罰します。ベストプラクティスでは、秘密は環境変数、秘密管理ツール、またはKMSバックストアに保存されるべきであり、決して関数内にインラインで置いてはいけません。CVE-2025-55184は、すべての違反ガイドラインを直接的なデータ侵害ベクターに変えてしまいます。

Reactのパッチは露出経路を閉じますが、攻撃者が既に取り出した情報を取り戻すことはできません。開発者は、サーバーアクションファイルに触れたすべての認証情報をローテーションし、ハードコーディングされた値を含むリポジトリを監査し、最終的にはシークレット管理を優先すべきセキュリティ境界として扱う必要があります。

共通の糸:Reactの「フライト」プロトコルの欠陥を解明する

Reactの最新のセキュリティ問題は、すべて一つの場所に行き着く:Reactサーバーコンポーネントとその奇妙な「フライト」ワイヤプロトコル。RSCはアプリケーションがサーバー上でコンポーネントをレンダリングし、シリアライズされたUI「ペイロード」をブラウザにストリーミングして、その後、ブラウザがそれをライブコンポーネントに再構築できるようにします。フライトは、コンポーネントツリー、プロパティ、サーバーアクションをバイトストリームに変換し、Reactが逆側で再構築できるようにするカスタムシリアリゼーションフォーマットです。

その再構築ステップは、すべてが横道にそれるところです。Flightはクライアントが送信する内容をデシリアライズする必要があり、影響を受けるバージョンのReactはそのペイロードの一部をほぼ信頼できるものと見なしていました。元のReact2Shellバグ(CVE-2025-55182)は、攻撃者が制御するFlightデータがどのように完全なリモートコード実行に昇格できるかを示しており、未修正のサーバーに対してほぼ100%の信頼性を持っていました。

新しいCVE—CVE-2025-55183(DoS、CVSS 7.5)とCVE-2025-55184(ソース漏洩)は、同じ根本的な問題に直面しています:信頼できない入力の不正な逆シリアル化です。シェルを起動する代わりに、巧妙に作成されたFlightペイロードは、RSCランタイムを無限ループに陥れたり、サーバーアクションのソースコードをエコーさせたりします。異なる結果ですが、根本原因は同じです:Reactは、公開インターネットにさらされることを意図していないプロトコルを介して送信される危険なデータを盲目的に処理します。

セキュリティ研究者は、この種のサーフェスエリアを好みます。なぜなら、それは複雑でありながら普遍的だからです。フライトは次のものを扱います: - コンポーネント参照 - サーバーアクション識別子 - 任意のシリアル化された値と「トークン」

それぞれが攻撃チェーンの潜在的なガジェットです。さらに、RSCがNext.js、react-router、Waku、@vitejs/plugin-rscといった人気のスタックに組み込まれていることを考えると、Flight内のどんなバグも瞬時にインターネット規模に広がります。

攻撃者がそれを悪用するためには、豪華なインフラは必要ありません。デフォルトのNext.jsアプリのRSCエンドポイントに対して、認証されていない単一のPOSTリクエストを送信するだけで—追加のミドルウェアやカスタムルートは不要—悪意のあるフライトペイロードを配信できます。CVE-2025-55183において、そのペイロードはReactのサーバーランタイムを無限ループに追い込み、CPUを固定させ、プロセスがクラッシュするかホストがそれを終了させるまで、他のすべてのリクエストを飢餓状態にします。

CVE-2025-55184は静かだが、ずさんなコードベースには厄介だ。別の工夫されたPOSTリクエストによって、サーバーがサーバーアクションのリテラルソースを返すように強制され、ハードコーディングされたAPIキー、データベースパスワード、または内部ロジックが露出してしまう。フレームワークがこれらのエンドポイントを自動的に接続しているため、多くのチームは「フレームワークのデフォルトは安全」という前提のもとRSCを展開したが、そのシリアライズ層が高価値で認証なしの攻撃面となっていることに気づいた。

なぜこれらの「シンプルな」POSTリクエストが非常に危険なのか

イラスト:なぜこれらの「単純な」POSTリクエストが非常に危険なのか
イラスト:なぜこれらの「単純な」POSTリクエストが非常に危険なのか

新しいReactの脆弱性にはゼロデイの魔法のような技術は使われていません。攻撃者は、アプリのReactサーバーコンポーネントエンドポイントに対して認証されていないHTTP POSTを送信する能力さえあれば十分です。ログインも必要なく、CSRFトークンも不要で、事前の foothold やフレームワーク特有の知識も障害になりません。

悪意のあるDoSバグ(CVE-2025-55183、CVSS 7.5)のリクエストは、ほとんど侮辱的にシンプルに見える場合があります。概念的には、単に次のようなものです:

```http POST /react?on_server_action=1 HTTP/1.1 Host: yourapp.com Content-Type: application/json ```

{"actionId":"ループ","args":[{"$type":"フライト","payload":"{}"}]}

その最小限のJSONバイナリが、あなたのReactサーバーのリソースを枯渇させる無限ループを引き起こす可能性があります。巨大なペイロードも、ヒープスプレーも必要なく、ただ小さなシリアライズオブジェクトがFlightプロトコルを悪用しています。

自動化はこれをさらに悪化させます。基本的なPythonスクリプトやNode.jsボットは、公開されたRSCエンドポイントのIPレンジをスキャンし、これらのPOSTリクエストを数千のターゲットに対して毎分送信することができます。コモディティボットネットは、かつてShellshockやHeartbleedのチェックを追加したのと同様に、これを彼らのプレイブックに組み込むことができます。

低スキルの攻撃者が最も利益を得ることができます。単一のReactコンポーネントを作成できない人でも、GitHubのPoCを実行し、新しいURLに差し替えてサーバーを攻撃し始めることができます。ソースコード露出バグ(CVE-2025-55184)についても、同じスクリプトを使用して、わずかに異なるペイロードに切り替え、サーバーのアクションソースをそのまま応答ボディにダンプすることができます。

典型的な RCE チェーンや SSRF 脆弱性とは対照的です。それらはしばしばメモリレイアウト、ガジェットチェーン、クラウドメタデータサービス、または内部ネットワークアーキテクチャに対する深い理解を必要とします。それらはより簡単に崩壊し、各ターゲットに合わせた調整が必要であり、偵察中にアラームを引き起こすことがよくあります。

ここでは、成功はほぼ二者択一のように見えます。もしあなたのスタックが脆弱なバージョンのreact-server-dom-webpack(19.0.0〜19.2.0)や、RSCが有効なNext.jsのようなフレームワークを使用している場合、標準のPOSTがそのまま機能します。機能フラグは不要、誤設定もなく、ソーシャルエンジニアリングも不要です。

その低い参入障壁はリスクの計算を変えます。このように武器化が容易な脆弱性は、マススキャン、ランサムウェアのプレイブック、および「スプレー&プレイ」キャンペーンで素早く現れる傾向があります。これを「ただの」DoSや「せいぜい」ソース露出と見なしている開発者は、そのシンプルさがまさに壊滅的な結果をもたらすことを、辛い経験を通じて知ることになるでしょう。

あなたのスタックは脆弱ですか?チェックリスト

React Server Componentsを搭載したReactスタックは、デフォルトで影響を受けます。最も重要な危険因子は、すべてのバグを含むreact-server-dom-webpackのバージョン19.0.0から19.2.0です。これには、元のRCEに加えて、新しいCVSS 7.5のDoSおよびソースリークが含まれています。そのパッケージが依存関係ツリーにその範囲で存在する場合、あなたは脆弱です。

主要なフレームワークはすでに影響を認めています。Next.js、Waku、@parcel/rsc、@vitejs/plugin-rsc、そしていくつかのカスタムRSCランタイムは、すべて同じFlightプロトコル実装に依存しています。Vercelの公式Next.jsアドバイザリー、セキュリティ速報: CVE-2025-55184およびCVE-2025-55183 では、実行する必要のあるNext.jsおよびReactのバージョンを追跡しています。

Nodeプロジェクトを迅速に確認するには、package.jsonを信頼するのではなく、ロックファイルを検索してください。npmプロジェクトの場合、package-lock.jsonを開き、次の内容を探します。

  • 1"react-server-dom-webpack"
  • 2「19.0.0」と「19.2.0」のバージョンフィールド
  • 3それらのバージョンを間接的に参照しているネストされた依存関係のブロック。

Yarnのユーザーは、yarn.lockでも同様の作業を行う必要があります。「react-server-dom-webpack@19.」でテキスト検索を行い、解決されたバージョンが少なくとも19.2.1、またはフレームワークが指定するパッチビルドであることを確認してください。複数の項目が存在する場合は、すべての脆弱なものをアップグレードする必要があります。

モノレポとワークスペースはさらに複雑にします。各アプリやパッケージは異なるReactとRSCツールチェーンを固定できるため、apps/、packages/、およびexamples/の下にあるすべてのpackage-lock.jsonやyarn.lockをスキャンする必要があります。依存関係のバンプ後には、node_modulesを組み込んだCIイメージやDockerfileを再構築する必要があります。

VercelのようなマネージドプラットフォームでNext.jsを実行している場合、パッケージのバージョンとプロバイダーの状態ページの両方を確認してください。フレームワークのベンダーはパッチをバックポートしていますが、ロックファイルが脆弱なFlightの実装にあなたを固定している限り、それは全く関係ありません。

RCEからDoSへ:止まらないパッチの一週間

12月のReactのセキュリティの状況は、火の中を駆け抜けるスプリントのように見えます。12月3日、MetaはCVE-2025-55182、つまり「React2Shell」と呼ばれるリモートコード実行の脆弱性に対する緊急パッチをリリースしました。この脆弱性は、認証されていないPOSTリクエストをReactサーバーコンポーネントのインフラストラクチャ上でほぼ100%信頼できるRCEに変えてしまいます。数日以内に、研究者たちとReactチームは再びコードに戻り、ちょうど強化されたFlightプロトコルパスを調査し始めました。

12月7日までに、メンテナーはポストモーテムテスト中に発見された2つのバグに対処する新しい修正のプロトタイプを用意しました:高危険度のDoS問題(CVE-2025-55183、CVSS 7.5)と、中程度の危険度のソースコード露出バグ(CVE-2025-55184)、さらに関連する内部ケースであるCVE-2025-67779です。12月8日には、静かだが積極的な調整フェーズが始まり、主要なホスティングプロバイダーやフレームワーク作成者がnpmリリースがライブになる前にプライベートチャネルに引き込まれました。

その調整ステップは重要でした。VercelのようなプラットフォームやNext.js、react-router、Waku、@parcel/rsc、@vitejs/plugin-rsc、RWSdkのメンテナが早期の技術的詳細を受け取り、公に発表される前に軽減策や緊急デプロイを行うことができました。12月10日までには、ほとんどの大規模ホストが既にフィルターを導入し、RSCエンドポイントに対する軽微なPOSTベースの攻撃を防ぐための画像を更新していました。

公共パッチは12月11日に配信され、react-server-dom-webpackおよび関連するReact 19.xパッケージの更新版がnpmに登場し、強化されたFlightシリアル化と厳密なサーバーアクション処理が導入されました。同日、ReactチームはCVE-2025-55183CVE-2025-55184、およびCVE-2025-67779の詳細を説明したアドバイザリーを公開し、新たなRCEが再導入されていないこと、そしてReact2Shellの修正が依然として有効であることを強調しました。

バグバウンティハンターたちがこの圧縮されたタイムラインの大部分を推進しました。ラフラン・デイヴィッドソンの11月29日の最初のRCEレポートが12月3日のパッチを引き起こし、その後の問題は、RyotaK(GMO Flatt Security)、野村信作(Bitforest)、アンドリュー・マクファーソン(AndrewMohawk)の各氏から寄せられ、全てMetaのバグバウンティパイプラインを通じて処理されました。この安定した有料レポートの流れが、遅延する可能性のあった災害を、数ヶ月にわたるゼロデイの無秩序な状況ではなく、慌ただしいが管理された1週間のパッチに変えました。

即時解決策:今日アプリを安全にする方法

イラストレーション: 即効性のある解決策: 今日あなたのアプリをどのように保護するか
イラストレーション: 即効性のある解決策: 今日あなたのアプリをどのように保護するか

Server Componentsを使用するReactアプリは、迅速な3ステップのロックダウンが必要です:更新、検証、監査。CVE-2025-55183(DoS、CVSS 7.5)およびCVE-2025-55184(ソースリーク)はどちらもFlightプロトコルに影響を与え、依存関係が古いままでは巧妙なネットワーキングも役に立ちません。

アップグレードから始めましょう。ほとんどのプロジェクトでは、パッチの当たったReact 19ラインにアップデートし、フレームワークの最新のセキュリティリリースを導入することを意味します。npmで次のコマンドを実行してください: - `npm install react@latest react-dom@latest react-server-dom-webpack@latest --save` - Next.jsの場合:`npm install next@latest --save`

Yarnユーザーはこれらのバンプをミラーすべきです: - `yarn add react@latest react-dom@latest react-server-dom-webpack@latest` - `yarn add next@latest` React Server Componentsに基づいて構築されたフレームワーク、例えばNext.js、Waku、`@parcel/rsc`、`@vitejs/plugin-rsc`、およびRWSdkは、独自のFlightハンドリングを提供しているため、コアReactだけでなく、各プロジェクトのセキュリティアドバイザリーリリースを追跡し、インストールする必要があります。

次に確認が必要です。バージョンを確認せずに更新を行うと、CVE-2025-55183とCVE-2025-55184がまだあなたのツリーに存在しているかどうかを推測することになります。以下のコマンドを使用して確認してください: - `npm ls react react-dom react-server-dom-webpack next` - または `yarn why react react-dom react-server-dom-webpack next` これにより、すべての解決されたバージョンがReactおよびNext.jsのセキュリティページで発表された修正済みリリースと一致していることを確認できます。

ネストされた依存関係に十分注意してください。モノレポや古いロックファイルは、トップレベルのバージョンアップ後でも脆弱な `react-server-dom-webpack` バージョン(19.0.0~19.2.0)を固定することがあります。ツリーがまだパッチ前のビルドを表示する場合は、`rm package-lock.json && npm install` または `rm yarn.lock && yarn install` を使用してロックファイルを再生成してください。

深層防御とは、CVE-2025-55184が既にあなたのコードを露出させていると仮定することです。サーバーアクションとRSCハンドラーにおけるハードコードされた秘密情報について、迅速な監査を実施してください: - `git grep -i "api_key\|apikey\|secret\|token\|password"` - `.env`のフォールバックや「一時的」インライン認証情報をスキャン - リクエストボディや設定を出力するログおよびデバッグヘルパーをレビュー

データベースのパスワード、サードパーティのAPIキー、JWT署名キー、OAuthクライアントシークレット、内部サービストークンなど、わずかにでも機密性のあるものはすべて定期的にローテーションしてください。一度攻撃者にソースが取得されてしまえば、それらのシークレットは取り消さない限り有効なままです。

主要なホストであるVercelは、未認証のフライト悪用を抑えるためにネットワークレベルの緩和策を既に講じています。これらのフィルターは時間を稼ぎますが、アプリを修正するわけではありません。誤って設定されたプロキシ、自ホストのデプロイメント、または将来のバイパスが発生すると、再びRCEやDoSのルーレットに戻されてしまいます。実際にこれらの新しいReactの脆弱性を封じるのは、更新された依存関係だけです。

パッチを超えて:Reactの未来にとってこれが意味すること

Reactの地獄のような週が厳しい質問を投げかけています:サーバーコンポーネントは大規模に信頼できるのか、それともエコシステムが未完成のバックエンドランタイムを本番環境に投入したのか?2週間で発生した3つのCVEは、すべて同じフライトプロトコルを悪用しており、これは単なるバグ以上の問題を示唆しています。Reactがネットワークからのシリアル化されたデータを扱う方法における根本的な設計問題のようです。

Reactサーバーコンポーネントはクライアントとサーバーの明確な分離を約束しましたが、実際にはReactをアプリケーションサーバーフレームワークに変えてしまいました。POSTリクエストを受け入れ、複雑なペイロードをデシリアライズし、サーバーアクションを実行すると、もはや「単なるフロントエンド」ではありません。あなたはネットワークに露出したバックエンドとなり、それに伴うすべての攻撃面を持つことになります。

これらの連続する脆弱性は、RSCにとって不快な成熟度の問題を提起しています。CVE-2025-55182は、認証なしのリモートコード実行(RCE)を引き起こし、続いてCVE-2025-55183およびCVE-2025-55184は、CVSS 7.5のサービス拒否(DoS)とソース開示を伴い、すべてが単純なPOSTによって到達可能でした。このパターンは、悪運のようには見えず、むしろ適切な敵対的レビューを受けていないセキュリティモデルのように思えます。

成長の痛みは依然として物語の一部を表しています。RSCは最前線に位置し、Next.js、react-router、Waku、@parcel/rsc、@vitejs/plugin-rscなどに接続されており、すべてが迅速に進化しています。Flightのようなプロトコルが複数のフレームワークの基盤となると、単一のデシリアライズの欠陥が瞬時にエコシステム全体の問題に発展します。

セキュリティチームは、これが来ることを警告していました。Unit 42はすでにCVE-2025-55182の積極的な悪用を追跡しており、Cobalt Strikeビーコンズからクラウドクレデンシャルの盗難、クリプトマイニングのペイロードまで含まれています。Wizは、デフォルトの設定がオプトインなしでプロダクションアプリを露出させたため、React2Shellを「クリティカル」と評価しました。

フロントエンド開発者は、以前はバックエンドやプラットフォームチームに属していた責任を担っています。サーバーアクションにおけるシークレット管理、入力の検証、レート制限の適用、ネットワークアクセスのセグメンテーションはもはや「運用上の問題」ではなくなりました。あなたのReactアプリがデータベース、キュー、内部APIに直接アクセスしているのであれば、職務名に関わらず、バックエンドコードを記述していることになります。

セキュリティファーストの開発は、Reactツールチェーン自体にシフトする必要があります。それには次のことが含まれます: - 新しいフレームワーク機能の脅威モデリング - デフォルトでのセキュリティが確保された構成の義務付け - Flightのようなプロトコルの積極的なファジング - シークレット管理とポリシーへの一級のサポート

最新のフレームワークに対する攻撃者の注目が高まると予想されます。Unit 42とWizの両者は、脆弱性が意見のあるスタック—React、Next.js、Nuxt、Remix—を狙っているというトレンドを観察しています。1つのバグが数千のアプリへのアクセスをもたらすためです。DoSとソース漏洩のチェーンについてのより深い分析は、AikidoのReact & Next.js DoS Vulnerability (CVE-2025-55184): React2Shell後に修正する必要があることの書き込みで示されており、これらの問題がプロバイダー間でどれほど迅速に連鎖するかを説明しています。

次の犠牲者にならないために:Reactセキュリティの新しいルール

React開発者は、現代のウェブリスク管理に関する集中講座を受けました:妥協を前提とし、すぐにパッチを当て、自己の抽象化を決して信頼しないことです。2週間以内に発生した3つのCVE—CVE-2025-55182CVE-2025-55183、およびCVE-2025-55184—は、人気のあるフレームワークがどれほど速く攻撃ベクターになるかを示しています。特にReact Server Componentsに関するすべてのReactアップグレードを、まずセキュリティリリースとして扱い、次に機能リリースと見なしてください。

つまり、「都合の良い時に更新」は終了しました。React 19.xをreact-server-dom-webpack 19.0.0–19.2.0やNext.js、react-router、Waku、@parcel/rsc、@vitejs/plugin-rsc、またはRWSdkなどのフレームワークと一緒に使用している場合、今すぐパッチを適用するか、ビジネス上の決定としてRCE、CVSS 7.5のDoS、ソースコードの漏洩を受け入れる必要があります。CIパイプラインは、古いTypeScript設定だけでなく、旧式のセキュリティバージョンでもビルドを失敗させるべきです。

一時的なアップグレードは戦略ではありません。すべてのReactチームは、以下のセキュリティアドバイザリーを購読すべきです: - Reactおよびreact-server-dom-webpack(npmアドバイザリー + GitHubセキュリティアドバイザリー) - あなたの主要フレームワーク(Next.js、Remixなど) - あなたのホスティングプロバイダーまたはPaaS(Vercel、Netlify、Cloudflare、AWS Amplify)

セキュリティのメーリングリストやRSSフィードは古臭く聞こえるかもしれませんが、「シンプルなPOSTリクエスト」でアプリがダウンしてしまうことがあります。CVE-2025-55182のようなCVEが驚きのTwitterスレッドとして舞い込まないように、GitHub Dependabot、Snyk、またはRenovateでアラートを設定しましょう。依存関係の更新はスプリント作業の一部と考え、サイドクエストではないと位置づけましょう。

これらのパッチが適用された後でも、脆弱な核心部分は依然として存在しています:Flightプロトコルを介した不正なデータの逆シリアル化です。ネットワークから複雑で入れ子になったオブジェクトをデコードするシステム—RSC、JSONベースのRPC、GraphQL—は、攻撃者が好む攻撃面に置かれています。より安全なエンコーディング、厳格なスキーマ、および徹底した入力検証は、設計要件であるべきであり、後付けの考慮事項ではありません。

フロントエンドスタックは現在、サーバーコードを実行し、シークレットを扱い、インフラをオーケストレーションします。ReactのCVEが発表された1ヶ月は、「フロントエンドセキュリティ」がただのウェブセキュリティにすぎないことを思い出させます。ウェブが真の強靭さを得るのは、UIコードがデータベースや認証システムに長い間予約されていた同じ偏執症を得たときだけです。

よくある質問

申し訳ありませんが、2025年に発表されたReactの新しい脆弱性に関する情報を提供することはできません。

2つの新しい脆弱性は、React Server Componentsに影響を与えます。最初の脆弱性(CVE-2025-55183、高リスク)は、無限ループを引き起こすサービス拒否(DoS)攻撃です。2つ目の脆弱性(CVE-2025-55184、中リスク)は、攻撃者がサーバーアクションのソースコードを見ることを可能にします。

どのバージョンのReactとNext.jsが影響を受けていますか?

脆弱性は、`react-server-dom-webpack` バージョン 19.0.0 から 19.2.0 までの React パッケージに影響を与えます。特に Next.js など、React サーバーコンポーネントを使用しているフレームワークが影響を受けます。ユーザーは、最新の修正バージョンに直ちに更新するように強く推奨されます。

これらのReactの脆弱性をどう修正すればよいですか?

主な修正は、Reactの依存関係を更新することです。特に、React Server Componentsに関連するパッケージを2025年12月11日以降にリリースされた最新バージョンにアップデートしてください。また、Vercelは自社プラットフォームのNext.jsユーザー向けに緩和策も展開しています。

これらの新しいエクスプロイトは、以前の RCE 脆弱性(React2Shell)に関連していますか?

はい、彼らはオリジナルのRCE脆弱性(CVE-2025-55182)のパッチをテストしている際にセキュリティ研究者によって発見されました。彼らは「Flight」プロトコルを介して似たような攻撃ベクターを悪用しますが、リモートコード実行のリスクは再導入していません。

🚀Discover More

Stay Ahead of the AI Curve

Discover the best AI tools, agents, and MCP servers curated by Stork.AI. Find the right solutions to supercharge your workflow.

Back to all posts