React

React2Shell(CVE-2025-55182)の対応手順|対象バージョンの確認とアップデート方法

React2Shell(CVE-2025-55182)は、React Server Components(RSC)の通信処理に起因する、認証不要のリモートコード実行(RCE)脆弱性です。深刻度はCVSS 10.0で、攻撃者は細工したHTTPリクエストを1回送るだけで、公開中のReact/Next.jsサーバー上で任意コードを実行できます。2025年12月3日の公表直後から実際の悪用が観測されており、Linuxバックドア(ZnDoorなど)を仕込む攻撃や日本国内の組織を狙った事例も報告されています。本記事は「自分の環境が影響を受けるか」を確認し、「修正版へ即アップデートする」ための実務手順に絞って解説します。

まとめ:React2Shell対応で今すぐやること

結論として、対応は次の3ステップです。第一に、React 19系のRSCパッケージ(react-server-dom-webpack/-turbopack/-parcel の19.0〜19.2.0)またはNext.js 15.0.0〜16.0.6を使っているかを確認します。第二に、該当するなら修正版へアップデートします(react-server-dom系は19.0.1/19.1.2/19.2.1、Next.jsは15.5.7や16.0.7などの各系最新パッチ)。第三に、再ビルドして動作確認します。設定で無効化する回避策は存在せず、アップデートが唯一の根本対策です。すでに悪用が広範に進行しているため、調査に時間をかけるより、対象の可能性があるなら先にアップデートを当てる判断が安全です。Pages Routerのみ・純クライアントSPAなら直接の攻撃対象にはなりませんが、依存ツリーに脆弱なRSCパッケージが残るため更新は必要です。詳しい技術原因とPoCの状況はReact Server Componentsの脆弱性(CVE-2025-55182)の基本概要とポイントで補完できます。

React2Shell(CVE-2025-55182)とは|RSCのデシリアライズに潜むRCE

React2Shellは、RSCがクライアントとサーバー間でデータをやり取りする内部プロトコル「Flight」のデシリアライズ処理に欠陥があり、攻撃者の細工したペイロードからサーバー上で任意のモジュール・関数が呼び出されてしまう脆弱性です。Log4Shell(2021年)になぞらえて「React2Shell」と通称されています。RSC自体の仕組みはReact Server Componentsとは何かで確認できます。

認証不要・CVSS 10.0という深刻度の根拠

攻撃の成立にログインや事前のトークンが不要で、公開ページのRSC用エンドポイント(Next.jsなら /_next/formaction など)へリクエストを送るだけで成立します。成功すれば child_processvm 経由のOSコマンド実行、機密情報の窃取、バックドア設置まで到達します。「攻撃難度が低い」「影響範囲が広い」「結果が致命的」の3条件がそろうため、CVSSは満点の10.0が付与されました。

CVE-2025-55182とCVE-2025-66478の関係

根本原因はReact側のCVE-2025-55182です。これがApp Router経由でNext.jsにも波及するため、Next.js側には注意喚起用にCVE-2025-66478が別途割り当てられました。NVD(米国の脆弱性データベース)はCVE-2025-66478をCVE-2025-55182の重複(Duplicate)と認定しています。実務上は「ReactのRSCパッケージとNext.jsの両方を更新する」と理解すれば十分です。CVE番号ごとの細かな経緯やPoCの公開状況はCVE-2025-55182の技術解説記事に譲ります。

影響を受けるバージョンと受けないバージョン

影響の有無は「React 19系のRSCパッケージを使っているか」と「Next.jsのApp Router(RSC)を使っているか」で決まります。下表が対象範囲です。

対象 影響を受けるバージョン 修正版
react-server-dom-webpack 19.0/19.1.0/19.1.1/19.2.0 19.0.1/19.1.2/19.2.1
react-server-dom-turbopack 19.0/19.1.0/19.1.1/19.2.0 19.0.1/19.1.2/19.2.1
react-server-dom-parcel 19.0/19.1.0/19.1.1/19.2.0 19.0.1/19.1.2/19.2.1
Next.js 15系 15.0.0〜15.5.6 15.0.5/15.1.9/15.2.6/15.3.6/15.4.8/15.5.7
Next.js 16系 16.0.0〜16.0.6 16.0.7
Next.js 14系 14.3.0-canary.77以降のカナリア 14系安定版へ戻す

影響を受けないと判断できる構成

RSCを持たないReact 18以前、Pages Router中心のNext.js 13系以前、RSCが実験段階だったNext.js 14系安定版(14.0〜14.2)は、直接の攻撃対象になりません。Next.js公式もPages RouterアプリとEdge Runtimeは影響を受けないと明言しています。最新のApp Router前提の設計についてはNext.js 16の概要と主要機能もあわせて確認できます。

App Router利用時のみ対象になる理由

RSCとServer ActionsはApp Routerでのみ動作し、その通信にFlightプロトコルが使われます。Pages RouterはこのRSC通信経路を持たないため、脆弱なコードパスが実行されません。つまり「App Routerを使っているか」が影響有無の分岐点です。ただしApp Router未使用でも、依存ツリーに脆弱な react-server-dom-* が残っていれば将来の誤用リスクが残るため、更新対象に含めます。

自分の環境が影響を受けるか確認する方法

確認は依存関係の実体を見るのが確実です。まず使用中バージョンを調べ、次に脆弱なRSCパッケージが入っていないかを確認します。

# React と Next.js のバージョンを確認
npm ls react react-dom next

# 脆弱な RSC パッケージが依存ツリーに無いか確認
npm ls react-server-dom-webpack react-server-dom-turbopack react-server-dom-parcel

# 既知脆弱性の自動検知(GitHub Advisory 登録済み)
npm audit

npm ls react-server-dom-webpack で19.0〜19.2.0が表示されたら対象です。package.jsondependencies に記載された next が15.0.0〜16.0.6の範囲なら、App Router利用の有無にかかわらずアップデート対象とみなして問題ありません。npm audit はCVE-2025-66478を含むGitHub Advisoryと突き合わせて警告を出します。GitHubリポジトリの「Security」タブやDependabotアラートでも検知できます。

React2Shellへの対応手順|修正版へのアップデート

対応の本体はアップデートです。React側パッケージとNext.jsの両方を、各メジャー系列の修正版に上げます。

React/RSCパッケージの更新

React 19系を使っている場合、RSCパッケージを修正版へ更新します。あわせて reactreact-dom も最新パッチに合わせます。

# 例:react-server-dom-webpack を 19.2 系の修正版へ
npm install [email protected] [email protected] [email protected]

19.0系なら19.0.1、19.1系なら19.1.2が対応する修正版です。使用中の系列に合わせて最小限のアップグレードで安全圏に入れます。

Next.jsの更新とカナリア版のダウングレード

Next.jsは使用中メジャー系列の修正版へ上げます。15.2系なら15.2.6、15.5系なら15.5.7、16.0系なら16.0.7です。

# 例:Next.js 15.5 系を修正版へ
npm install [email protected]

# 14系カナリア(14.3.0-canary.77 以降)を使っていた場合は安定版へ戻す
npm install next@14

更新後はアプリを再ビルドし、App Routerのフォーム送信やServer Actionsの挙動を確認します。メジャーバージョンは変わらないため破壊的変更は基本的にありませんが、Reactパッケージが同時に上がるため動作確認は省略しないでください。

周辺フレームワーク(React Router/Expo/RedwoodJS/Vite/Parcel)

RSCを取り込む周辺ツールも更新が必要です。React RouterのRSC実験機能、ExpoのWebビルドで react-server-dom-webpack を参照するケース、RedwoodJSの rwsdk、Viteの @vitejs/plugin-rsc、Parcel RSC が該当します。いずれもReact本体の修正版に追随して最新化します。利用していなければ対応不要ですが、依存ツリーに含まれていないかは確認しておきます。

暫定回避策がない理由とWAF・ホスティングの位置づけ

設定でRSCだけを無効化するスイッチは用意されていません。Next.js公式も「脆弱なコードパスを無効化する設定オプションはない」と明記しており、回避策はアップデート一択です。VercelやCloudflareはWAFで攻撃パターンの遮断を提供しましたが、これは時間稼ぎの緩和策にすぎず、すり抜けの可能性があります。WAFで守られているからとアップデートを先送りするのは危険です。npmのサプライチェーン経由のリスク全般についてはnpmサプライチェーン攻撃(Shai-Hulud)の解説も参考になります。

緊急対応チェックリストと優先順位

悪用が現に進行している以上、優先順位を付けて動くべきです。次の順で対応すると取りこぼしが減ります。

  1. 公開中でApp Router(RSC・Server Actions)を使うNext.jsアプリを最優先で即アップデートする
  2. 同じくRSCを使うReact単体・周辺フレームワークのサーバー実行環境を更新する
  3. Pages Router中心・純クライアントSPAは攻撃対象外だが、依存ツリーの react-server-dom-* を更新する
  4. サーバーログで POST /_next/formaction への不審なアクセスや異常に大きいペイロードがないかを点検する
  5. 侵害の痕跡(見覚えのない常駐プロセス・外部通信・新規ファイル)を確認する

判断を1つ言い切ると、「インターネットに公開されたApp RouterのNext.jsアプリ」は確認を待たずに先にアップデートして構いません。確認に手間取る間に攻撃が成立すれば被害は不可逆だからです。逆に、社内ネットワークに閉じたPages Routerアプリまで同じ緊急度で扱うのは過剰で、ここは通常の依存更新サイクルに載せれば十分です。なお、攻撃成立後のログ点検は「やられていないか」の確認であって防御ではありません。検知に頼る前に、まず脆弱性そのものを消すことを優先してください。同種のRCE系CVEとしてNext.jsのCVE-2025-29927の対応も振り返っておくと、対応体制の整備に役立ちます。

よくある質問

react2shellの対応は具体的に何をすればいいですか?

使用中のReact 19系RSCパッケージとNext.jsのバージョンを確認し、修正版へアップデートするのが対応の中心です。react-server-dom-webpack/-turbopack/-parcel は19.0.1・19.1.2・19.2.1のいずれか、Next.jsは15.5.7や16.0.7など各系列の最新パッチに上げ、再ビルドして動作確認します。設定での無効化はできず、アップデート以外に根本対策はありません。

React2Shellとは何ですか?

React Server ComponentsのFlightプロトコルのデシリアライズ処理の欠陥により、認証なしでサーバー上の任意コードを実行できるRCE脆弱性です。正式名称はCVE-2025-55182で、深刻度はCVSS 10.0。Log4ShellになぞらえてReact2Shellと通称されています。

影響を受けないバージョンはどれですか?

RSCを持たないReact 18以前、Pages Router中心のNext.js 13系以前、RSCが実験段階のNext.js 14系安定版(14.0〜14.2)は直接の攻撃対象になりません。Next.js公式はPages RouterアプリとEdge Runtimeを影響対象外としています。ただし依存ツリーに脆弱なRSCパッケージが含まれる場合は更新が必要です。

自分の環境が影響を受けるか確認する方法は?

npm ls react react-dom next でバージョンを、npm ls react-server-dom-webpack で脆弱なRSCパッケージの有無を確認します。19.0〜19.2.0のRSCパッケージ、または15.0.0〜16.0.6のNext.jsが見つかれば対象です。npm audit やDependabotでも検知できます。

アップデートできない場合、暫定的な回避策はありますか?

RSCを無効化する設定は存在せず、根本的な回避策はありません。WAF(CloudflareやVercelの遮断ルール)で一時的に攻撃を緩和できますが、すり抜けの可能性があり時間稼ぎにすぎません。猶予が得られている間に必ず修正版へアップデートしてください。

React2Shellはすでに悪用されていますか?

はい。2025年12月3日の公表直後から広範な悪用が観測されており、ZnDoorやKSwapDoorといったLinuxバックドアを設置する攻撃、日本国内の組織を標的にした事例が報告されています。「まだ被害がないから大丈夫」という前提は成り立たないため、即時対応が必要です。

関連記事

資料請求

RELATED POSTS 関連記事