Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-55182-React-Server-Components-Flight-React2Shell- — CVE-2025-55182(React2Shell)RSC Flight デシリアライゼーション RCE のアドバイザリと分析。根本原因の分解、攻撃フロー、パッチ差分、Sigma/Suricata/WAF 検出ルールを収録。 | Kitploit
ツール/GitHubGitHub/certbn/cve-2025-55182-react-server-components-flight-react2shell-
侵害指標 (IOC) 管理脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティ脅威インテリジェンス論文と研究インシデントレスポンス

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
GitHub
certbn/cve-2025-55182-react-server-components-flight-react2shell-

CVE-2025-55182-React-Server-Components-Flight-React2Shell-

CVE-2025-55182(React2Shell)RSC Flight デシリアライゼーション RCE のアドバイザリと分析。根本原因の分解、攻撃フロー、パッチ差分、Sigma/Suricata/WAF 検出ルールを収録。

リポジトリを見る
12日前未レビュー

CVE-2025-55182: React Server Components Flight プロトコルの逆シリアル化によるリモートコード実行 (React2Shell)

CVSS Type KEV Ransomware

最終確認日: 2026-11-04 (KST)。各数値は下部 References の出典で確認した値のみを記載しており、出典間で値が異なる場合はすべて併記しました。

📌 TL;DR

  • 何が: React Server Components(RSC)の Flight プロトコルの逆シリアライズ(deserialization)過程で参照パスのプロパティ名を検証していないため、攻撃者がプロトタイプチェーン(prototype chain)をたどって Function コンストラクタまで到達し、任意の JavaScript を実行できる可能性があります。
  • どこで: react-server-dom-webpack / -parcel / -turbopack 19.0.0、19.1.0、19.1.1、19.2.0 と、これを使用するフレームワーク — 代表例として Next.js 15.x / 16.x App Router。Server Function を直接定義していなくても、RSC をサポートしていれば影響を受けます。
  • どれほど危険か: 認証なしで HTTP リクエスト1回で RCE(CVSS 10.0)。公開から数時間で中国系グループが悪用を開始し、CISA KEV 登録済みおよびランサムウェア悪用 "Known" の状態です。

📋 基本情報

項目内容
CVE IDCVE-2025-55182 (React) / Next.js 用の CVE-2025-66478 は**重複として拒否(Rejected)**された
別名React2Shell
公開日2025-12-03 (React チームの勧告、同日にパッチ配布)
発見者Lachlan Davidson (2025-11-29 に Meta Bug Bounty で報告)
影響製品/バージョンreact-server-dom-webpack、react-server-dom-parcel、react-server-dom-turbopack 19.0.0、19.1.0、19.1.1、19.2.0 / Next.js 14.3.0-canary.77 以降の canary、15.x、16.x (App Router)
パッチバージョンRCE 修正: React 19.0.1 / 19.1.2 / 19.2.1、Next.js 15.0.5 / 15.1.9 / 15.2.6 / 15.3.6 / 15.4.8 / 15.5.7 / 16.0.7
推奨最終バージョン(後続の脆弱性を含む): React 19.0.3 / 19.1.4 / 19.2.3 (下記「後続の脆弱性」を参照)
CVSS v3.110.0 Critical — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS v4.0本ドキュメント作成時点で一次情報源からは確認できず
CWECWE-502 Deserialization of Untrusted Data (Vercel GHSA-9qr9-h5gf-34mp、GitLab Advisory DB)。CISA KEV の項目には CWE の記載なし
実際の悪用状況悪用を確認。 CISA KEV 登録 2025-12-05、連邦機関の対応期限 2025-12-12、ランサムウェアキャンペーンでの使用: Known。AWS は公開から数時間以内に悪用の試行を観測

影響範囲の詳細

構成要素影響バージョン修正バージョン
react-server-dom-webpack / -parcel / -turbopack19.0.019.0.1 (推奨 19.0.3)
〃19.1.0, 19.1.119.1.2 (推奨 19.1.4)
〃19.2.019.2.1 (推奨 19.2.3)
Next.js 15.x (App Router)15.0 ~ 15.5 パッチ以前15.0.5 / 15.1.9 / 15.2.6 / 15.3.6 / 15.4.8 / 15.5.7
Next.js 16.x (App Router)16.0.7 未満16.0.7
Next.js canary14.3.0-canary.77 以上15.6.0-canary.58 / 16.1.0-canary.12 (14.3 canary 利用者は 14.x stable へダウングレード)
その他の RSC 統合ツールReact Router(unstable RSC API)、Waku、Parcel RSC プラグイン、Vite RSC プラグイン(@vitejs/plugin-rsc)、RedwoodSDK、Expo など各ツールの最新バージョン + パッチ済み react-server-dom-*

影響なし: サーバーを使用しない純粋なクライアント React アプリ、Next.js 13.x / 14.x stable、Pages Router アプリ、Edge Runtime デプロイ。

後続の脆弱性 (パッチバージョン判断時の注意)

React2Shell のパッチ以降、RSC に関する追加研究により RCE ではない脆弱性が相次いで公開されました。RCE 自体は 19.0.1 / 19.1.2 / 19.2.1 で修正されましたが、以下の脆弱性まで防ぐには最新バージョンが必要です。

CVE種類CVSS v3.1公開修正バージョン
CVE-2025-55184サービス拒否(DoS)7.52025-12-1119.0.2 / 19.1.3 / 19.2.2 (不完全)
CVE-2025-55183ソースコード露出5.32025-12-1119.0.2 / 19.1.3 / 19.2.2
CVE-2025-67779CVE-2025-55184の不完全なパッチによるDoS7.52025-12-1219.0.3 / 19.1.4 / 19.2.3

一部のセキュリティベンダーの記事(例: Zscalerのアップデート)は「CVE-2025-55182の元のパッチは不完全だった」と表現しています。しかしReact・GitLabの勧告に基づくと、不完全だったのは**DoS修正(CVE-2025-55184)**であり、RCE修正がバイパスされたという一次情報源は確認できませんでした。いずれにせよ推奨される対応は19.0.3 / 19.1.4 / 19.2.3以上です。

主要な日付

日付出来事
2025-11-29Lachlan DavidsonがMeta Bug Bountyで報告
2025-11-30Metaのセキュリティ研究者が確認、Reactチームと修正に着手
2025-12-03Reactの勧告およびパッチ(19.0.1 / 19.1.2 / 19.2.1)、Next.jsの勧告(CVE-2025-66478)を公開。クラウド・WAFベンダーは事前共有を受け保護ルールを配布
2025-12-03 ~ 04AWS、公開から数時間以内に中国系グループ(Earth Lamia、Jackpot Panda)による悪用の試みを観測。Zscalerは最初の2時間で4,100件以上の悪用の試みを観測
2025-12-05CISA KEVに登録(期限12-12)。Microsoftはこの日から実際の悪用活動を検知
2025-12-11後続の脆弱性CVE-2025-55184 / 55183を公開
2025-12-12CVE-2025-67779(不完全なパッチ)を公開、19.0.3 / 19.1.4 / 19.2.3を配布
2025-12-15Microsoft、悪用後の活動分析およびハンティングガイドを公開

🔍 脆弱性の原因分析 (Root Cause)

1. 背景: Flightプロトコルとチャンク(chunk)

RSCはクライアント・サーバー間のデータをFlightという独自のシリアライズプロトコルでやり取りします。クライアントがServer Functionを呼び出すと、ブラウザは引数をmultipart/form-data POSTリクエストとして送信し、各フォームフィールドは番号が付いたチャンク1つになります。

  • 文字列の接頭辞で型を表現します。例: $<id>は別のチャンクの値参照、$@<id>はチャンクオブジェクト自体の参照、$B<id>はBlob処理。
  • チャンクはthen()メソッドを持つthenableオブジェクトです。JavaScriptのawaitはthenableに出会うとthen()を呼び出し、結果がまたthenableであれば再帰的に呼び出し続けます。

2. 何が: getOutlinedModel()の無検証なプロパティ探索

サーバー側のFlightレスポンス処理器(packages/react-server/src/ReactFlightReplyServer.js)のgetOutlinedModel()は、$<id>:<prop1>:<prop2>形式の参照を:で分割し、対象チャンクでchunk[prop1][prop2]の順にプロパティをたどります。

このとき、プロパティ名がオブジェクト自身のプロパティ(own property)であるかを検証していませんでした。 そのため、__proto__、constructor、prototypeのような名前で継承されたプロパティにまでアクセスできました。

3. なぜ: プロトタイプチェーンで危険なオブジェクトに到達 (CWE-502)

JavaScriptでは任意のオブジェクトのconstructor.constructorはグローバルの**Functionコンストラクタ**であり、文字列を受け取って実行可能な関数を生成します。公開分析(OPSWAT、Zscaler)によると、攻撃者は次の2つを組み合わせます。

要素悪用方法 (概念)
プロトタイプ探索参照パスで内部メソッド(Chunk.prototype.then)とFunctionコンストラクタにアクセス
then()の再帰的解釈攻撃者が構成した偽のチャンクがthenableとして扱われ、逆シリアライズエンジンがその状態をそのまま信頼
$B(Blob)処理器内部レスポンスオブジェクトのメソッド呼び出し経路を横取りし、Functionコンストラクタに攻撃者コードを渡すよう誘導

4. どのように: 認証より先に実行される

Next.jsでは、Server FunctionリクエストはhandleAction()を経てReactのFlight逆シリアライズに渡されます。逆シリアライズは、どのServer Functionを呼び出すかを確認する前に実行されます。そのため、Next-Actionヘッダーの値が実際に存在するアクションでなくても、ログインの背後にあるエンドポイントであってもペイロードが処理されます(OPSWAT)。デフォルトのcreate-next-appプロダクションビルドも、特別な設定なしで影響を受けます。

コードが実行されると、Node.js実行コンテキスト全体 — child_processを介したシェルコマンド、環境変数(DB資格情報・APIキー)、ローカルファイルシステム、クラウドメタデータエンドポイント — にアクセスできます。

5. パッチ比較 (Before / After)

以下は、公開分析(Zscaler、OPSWAT、Seqrite)の記述に基づいて変更の要点を再構成した概念コードです。実際のコミットの原文ではなく、関数シグネチャなどの詳細は推測です。正確なdiffはfacebook/reactの19.0.1 / 19.1.2 / 19.2.1リリースの変更分で確認してください。(修正コミットのハッシュは、本文書作成時点で一次ソースとして確認できませんでした。)

Before (脆弱)

// ReactFlightReplyServer.js — getOutlinedModel (개념)
function getOutlinedModel(response, reference, parentObject, key, map) {
  const path = reference.split(':');
  const id = parseInt(path[0], 16);
  const chunk = getChunk(response, id);
  // ...
  let value = chunk.value;
  for (let i = 1; i < path.length; i++) {
    value = value[path[i]];        // __proto__, constructor 등 상속 속성까지 그대로 탐색
  }
  return map(response, value);
}

After(パッチ)

// 자신의 속성(own property)만 허용 (개념)
const hasOwnProperty = Object.prototype.hasOwnProperty;

function getOutlinedModel(response, reference, parentObject, key, map) {
  // ...
  for (let i = 1; i < path.length; i++) {
    const name = path[i];
    if (!hasOwnProperty.call(value, name)) {
      // 상속된 속성 접근 차단 → 역직렬화 실패 처리
      throw new Error('Invalid reference.');
    }
    value = value[name];
  }
  // ...
}
// 모듈 export를 해석하는 경로(requireModule 등)에도 동일한 own-property 검사 추가
区分BeforeAfter
参照パス属性の探索プロトタイプチェーンを含むすべての属性自身の属性のみ (hasOwnProperty.call())
モジュール export の解決継承属性まで返却可能own-property 検査後に返却
__proto__ / constructor / prototypeアクセス可能ブロック
結果Function コンストラクタに到達 → RCE参照解決失敗

Smashing Magazine の分析によると、パッチは hasOwnProperty 参照を事前にキャッシュしておき、逆シリアル化経路のすべての属性検査で .call() を介して呼び出します。これは、攻撃者が対象オブジェクトの hasOwnProperty 自体を上書きして検査を回避することを防ぐ一般的な防御パターンです(意図に関する解釈は推測)。

⚔️ 攻撃シナリオ

攻撃の前提条件

条件内容
認証不要 — 逆シリアル化がアクション確認・認証より先に実行される
ユーザー操作不要
ネットワーク位置リモート。RSC サーバーエンドポイントに HTTP リクエストを送信できればよい
対象条件脆弱なバージョンの react-server-dom-* を使用する RSC サーバー。Server Function を定義していなくても RSC サポートのみで該当
リクエスト形式multipart/form-data POST リクエスト 1 回(Next.js は Next-Action ヘッダーを含み、値は任意)

段階別フロー(概念レベル)

ツールをダウンロード