ssecutils
Security / Browser-native guide

React2Shell(CVE-2025-55182)詳解 - RSC/Next.jsの事前認証RCE

9Zero tracking reading surface

React2Shell(CVE-2025-55182)とは

React2Shell は、2025年12月3日に Meta と Vercel が公表した React Server Components(RSC)の致命的な脆弱性です。CVE 番号は CVE-2025-55182、深刻度は CVSS 10.0(最大値)認証前(事前認証)のリモートコード実行(RCE)が可能で、攻撃者は細工した HTTP リクエスト 1 通でサーバー上に任意のコードを実行できます。

React / Next.js は世界中の Web アプリで使われているため影響範囲が極めて広く、業界では Log4Shell(CVE-2021-44228)に並ぶ規模のフレームワーク層脆弱性として扱われました。

なぜこれほど危険なのか

  • 事前認証: ログイン不要。公開エンドポイントに到達できれば誰でも攻撃を試みられる。
  • RCE: 情報漏えいに留まらず、サーバーそのものを乗っ取れる(コインマイナー設置や横展開の起点になる)。
  • CVSS 10.0: 攻撃の容易さ・影響の大きさともに最大評価。
  • 普及度: React 19 / Next.js を使う多数のアプリが対象になりうる。

公表直後(2025年12月5日頃)から悪用の試みが観測され、当初はレッドチームによる検証が中心でしたが、実際の攻撃者がコインマイナーを設置する事例も報告されました。

根本原因: 安全でないデシリアライズ

React Server Components は、クライアントからのリクエストをサーバー側の関数呼び出し(Server Functions / Server Actions)に変換するため、リクエストのペイロードをデシリアライズします。CVE-2025-55182 は、このペイロードのデコード処理に十分な検証がなかったことに起因します。

攻撃者が Server Function のエンドポイントに細工したペイロードを送ると、本来データとして扱うべき入力がサーバー側の処理へ流れ込み、安全でないデシリアライズ(Insecure Deserialization)を経て任意コード実行に至ります。これは OWASP でいう A08:2021 - Software and Data Integrity Failures に分類される、古典的かつ強力な脆弱性パターンです。

「ユーザーから来たデータをそのままオブジェクトや処理に復元する」とき、信頼境界を越えた入力が実行コンテキストに混入しうる——これがデシリアライズ系脆弱性の本質です。

攻撃の流れ(概念)

悪用を助長しないため、具体的なエクスプロイトコードは載せず、流れの概念だけを示します。

  1. 攻撃者が RSC の Server Function を受け付けるエンドポイントを特定する(多くは通常の POST エンドポイント)。
  2. デシリアライズ処理を悪用する細工済みペイロードを HTTP リクエストとして送信する。
  3. サーバーが検証不十分なままペイロードをデコード・処理し、任意コードが実行される。
  4. 以降、Web シェル設置・認証情報窃取・横展開などに繋がる。

影響を受けるバージョンと修正版

以下は公表時点で示された主なバージョンです。最終的な対象・修正版は必ず公式の GitHub Security Advisory / NVD で確認してください(アドバイザリは更新されることがあります)。Next.js 側にも関連して CVE-2025-66478 が併せて報告されています。

対象影響を受けるバージョン修正版
React Server Components19.0.0 / 19.1.0 / 19.1.1 / 19.2.019.0.3 / 19.1.4 / 19.2.3
Next.js上記 RSC を含む各系列15.0.5 / 15.1.9 / 15.2.6 / 15.3.6 / 15.4.8 / 15.5.7 / 16.0.7
対象 npm パッケージreact-server-dom-webpack / react-server-dom-turbopack / react-server-dom-parcel

自分のアプリは影響を受けるか

  • Server Actions / Server Functions を使っている(フォーム送信やサーバー関数呼び出し)→ 影響大。最優先で対応する。
  • RSC を使う SSR / App Router 構成 → 対象バージョンなら対応が必要。
  • 静的書き出し中心・クライアントコンポーネントのみで Server Function を持たない → 攻撃面は限定的だが、バージョンは上げておく。

まず使用バージョンを確認します。

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

# package.json と lockfile(package-lock.json 等)も確認する

対策

  1. 修正版へ即アップグレード(最優先)。React / Next.js を公式アドバイザリ記載のパッチ版以上に上げる。
  2. 一時緩和: すぐに上げられない場合、WAF で Server Function エンドポイントへの異常なペイロードを遮断し、不要なら該当機能を無効化する。
  3. 監視: 公表後に観測された不審なプロセス(コインマイナー等)や外向き通信を検知する。侵害の痕跡(IoC)はベンダーのアドバイザリを参照。
  4. 多層防御: egress 制限・最小権限・ネットワーク隔離で、万一 RCE が成立しても被害を局所化する。

教訓: デシリアライズと信頼境界

React2Shell は新概念の脆弱性ではなく、「外部入力を検証せずに復元・実行してはならない」という古典的原則の再来です。フレームワークが裏側で行うデシリアライズも、ユーザー入力が絡む以上は信頼境界の対象になります。

  • ユーザー由来データはあくまでデータとして扱い、コード/オブジェクト復元の経路に直結させない。
  • 依存フレームワークのセキュリティ通知を購読し、CVSS 9.0 以上は即時対応するフローを用意しておく。
  • SBOM や依存可視化で「どのバージョンを使っているか」を常に即答できる状態にしておく。

まとめ

React2Shell(CVE-2025-55182)は CVSS 10.0・事前認証 RCE という最悪クラスの脆弱性で、原因は RSC のペイロードデシリアライズの検証不足でした。対応はシンプルで、(1) バージョン確認 → (2) 修正版へアップグレード → (3) 監視と一時緩和の順に進めます。フレームワーク任せの処理であっても、ユーザー入力が通る以上は信頼境界が存在することを思い出させる事例です。

関連リスクの全体像は OWASP Top 10 入門、ヘッダによる多層防御は HTTP セキュリティヘッダ詳解 も合わせてご覧ください。

Related reading

関連記事

Security11
MCPのセキュリティ - Tool Poisoning・Rug Pull・サプライチェーンの実例と対策AIエージェントの標準プロトコルMCPの攻撃面を体系整理。ツール説明文に指示を仕込むTool Poisoning、承認後に定義を差し替えるRug Pull(CVE-2025-54136)、偽MCPサーバのサプライチェーン、過剰権限トークン、MCP Inspector RCEなど2025〜26年の実例と、最小権限・人間による承認・サーバ検証の防御を日本語で解説します。
Security11
ClickFix攻撃とは - 偽CAPTCHAで「自分で感染させる」手口とFileFix亜種・対策偽CAPTCHA・偽エラーでWin+RやPowerShellにコマンドを貼り付け実行させ、Lumma/StealCなどを自分で感染させるClickFix攻撃を解説。Run無効化を回避するFileFix亜種、700サイト改ざん(CVE-2026-26980)などの実例、利用者教育・GPO・ASR・ログ監視による多層防御を日本語で整理します。
Security11
AIブラウザの危険性 - Comet/Atlasを乗っ取る間接プロンプトインジェクションPerplexity CometやChatGPT AtlasなどのAIブラウザを狙う間接プロンプトインジェクションを解説。Webページに隠した指示でAIを操り、ログイン中のGmailや1Passwordを横断悪用してOTPを盗むBraveのPoC、Zenityのゼロクリック乗っ取り、Same-Origin Policyが無力化される理由、入力分離・操作ゲート・モード分離による対策を日本語で整理します。
Security11
インフォスティーラーとセッションCookie窃取 - MFAを回避するpass-the-cookie情報窃取マルウェアがMFAを突破ではなく迂回する仕組みを解説。Lumma/StealCが数十秒で全ブラウザのCookieと保存パスワードを盗み、攻撃者がpass-the-cookieで本人になりすます流れ、3.9億件規模の被害、ClickFix等の感染経路、ChromeのDBSC・FIDO2・短命セッション・条件付きアクセス・異常検知による多層防御を日本語で整理します。