Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-55182-analysis — 浅谈React Server Components RCE 漏洞分析 | Kitploit
ツール/GitHubGitHub/airis101/cve-2025-55182-analysis
脆弱性分析コード分析エクスプロイトウェブアプリケーション悪用論文と研究学習と教育
GitHubairis101/cve-2025-55182-analysis

CVE-2025-55182-analysis

浅谈React Server Components RCE 漏洞分析

リポジトリを見る
15ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

一、脆弱性の概要

ここ数日、Reactの逆シリアル化RCE脆弱性が話題になっています。公式のCVSSは直接10.0点で、当時のLog4jと同レベルです。これを「現代のフロントエンドにおけるLog4j」と称する噂が一時期広がり、多くの企業の開発者にパニックを引き起こし、朝起きてすぐに文献を調べたりパッチを当てたりする事態になりました…。同時に、ネット上では疑問の声も上がっており、テストを行った人の中には「この脆弱性は宣伝されているほどではなく、逆に利用には一定の条件が必要だ」と指摘する人もいました。そこで、私は時間を取ってこの脆弱性を詳しく調査することにしました。

1.1 脆弱性情報

  • CVE番号: CVE-2025-55182
  • CVSSスコア: 10.0 (Critical)
  • 脆弱性タイプ: プロトタイプ汚染 → リモートコード実行
  • 影響を受けるバージョン: react-server-dom-webpack < 19.2.0、react-server-dom-turbopack < 19.2.0
  • 影響範囲: React Server Components を使用するアプリケーション

二、脆弱性の原理分析

2.1 脆弱性の根本原因

この脆弱性が発生する原因は以下の通りです。[email protected] において、サーバーが Server Action を解析する鍵となる関数は requireModule(疑似コード)です:

root@kitploit:~
function requireModule(metadata) {
  var moduleExports = __webpack_require__(metadata[0]);
  // ...
  return "*" === metadata[2]
    ? moduleExports
    : "" === metadata[2]
      ? moduleExports.__esModule
        ? moduleExports.default
        : moduleExports
      : moduleExports[metadata[2]];  // ← 脆弱性ポイント
}

2.2 脆弱性の核心問題

脆弱性の核心は moduleExports[metadata[2]] の部分にあり、metadata[2] に対する検証が行われていないため、攻撃者はモジュール自身のエクスポートプロパティだけでなく、プロトタイプチェーン上のプロパティ(constructor、__proto__ など)にもアクセスできます。攻撃者が metadata[0] を構築した後(例えばそれを vm に指定)、さらに metadata[2] を構築することで、指定されたモジュール内の危険なメソッド(例:vm.runInThisContext)をエクスポートさせ、脆弱性を悪用することが可能になります。


三、脆弱性の悪用分析

分析にあたり、ejpir が提供したテスト環境と脆弱性悪用コードを参考にし、vm_runInThisContext という Code Execution gadget を例に分析を行いました。プロセスは以下の通りです(注意:実際の環境では悪用手順は多少異なります)。

ステップ 1: リクエストの受信

まず、ペイロードを含むリクエストを送信した後、ブレークポイントでリクエスト取得位置を確認します:

ステップ 2: フォームデータの解析

続いて、プログラムは const formData = parseMultipart(buffer, boundaryMatch[1]); の位置に到達します。parseMultipart にステップインします:

parseMultipart はリクエストボディデータを抽出し、formData に返します:

ステップ 3: decodeAction の呼び出し(脆弱性の入口)

const actionFn = await decodeAction(formData, serverManifest); 脆弱性発生位置 にステップインします:

loadServerReference にステップインします:

ステップ 4: 脆弱性の核心コード requireModule

ここから脆弱性の核心コード位置 requireModule に到達します。ステップイン:

id の値を # の前後でモジュールメソッドとして分割し、bound パラメータ値をメソッドの引数として返します:

ステップ 5: ペイロードの実行

actionFn にステップインし、最終的なペイロードを実行します:

以上で脆弱性の悪用は終了です!


四、まとめと防御

この脆弱性自体は、入力の検証が不十分であることが原因であり、この点は Log4j や fastjson とまったく同じです。上記のテストでは vm_runInThisContext を使用しましたが、実際にはこの脆弱性には複数のガジェットが利用可能です。例えば:

  • vm#runInThisContext
  • vm#runInNewContext
  • child_process#execSync
  • child_process#execFileSync
  • child_process#spawnSync
  • fs#readFileSync
  • fs#writeFileSync
  • #constructor
  • #__proto__
  • #prototype

攻撃者はこの脆弱性を利用して以下を実現できます:

  • リモートコード実行(RCE): vm#runInThisContext または child_process#execSync による任意のシステムコマンド実行
  • ファイルシステム操作: fs#readFileSync、fs#writeFileSync による任意のファイル読み取り/書き込み
  • 永続化攻撃: SSH公開鍵の書き込み、.bashrc の改ざん、アプリケーションファイルの上書きなど
  • 情報漏洩: 機密設定ファイル(.env、秘密鍵、データベース認証情報など)の読み取り

これに基づき、以下の防御策を提示します。

1. 一時的な防御

一時的な防御としては、以下の観点が考えられます。WAF上でこれらの危険なフィールドをブロックするルールを設定し、悪意ある攻撃を即座に阻止できます。また、nginxでマッチングブロックを設定することも可能です。以下に例を示します:

root@kitploit:~
# Nginx 設定例
location /formaction {
    # 危険なモジュール参照を含むリクエストをブロック
    if ($request_body ~* "(vm#|child_process#|fs#|module#)") {
        return 403;
    }
    # プロトタイプ汚染の試行をブロック
    if ($request_body ~* "(#constructor|#__proto__|#prototype)") {
        return 403;
    }
}

2. 速やかなアップデート

現在、公式はセキュリティアップデートを公開しています。直ちに安全なバージョンにアップグレードしてください!

root@kitploit:~
# react-server-dom-webpack をアップグレード
npm install react-server-dom-webpack@>=19.2.0

# react-server-dom-turbopack をアップグレード
npm install react-server-dom-turbopack@>=19.2.0

# Next.js ユーザー
npm install next@>=15.0.5

修正バージョン:

  • react-server-dom-webpack: >= 19.2.0
  • react-server-dom-turbopack: >= 19.2.0
  • next.js: >= 15.0.5

上記の脆弱性を分析する際、whiteov3rflow の関連エクスプロイトを参考にし、さらにテスト環境向けの脆弱性検出ツールを作成して GitHub リポジトリに公開しました:

自己チェックしたい方はアクセスして入手してください(注意:原作者のテスト環境の都合上、現時点では元のテスト環境にのみ適用可能です。今後改善予定ですので、必要な方はご自身で修正してお使いください…)。なお、正規の許可を得て使用し、不正な破壊行為は禁止します!

3. 慎重に行動せよ!

本日(2025.12.5)時点で、ネット上の状況を見ると、この脆弱性の「風評」はジェットコースターのように上下しています。ある時は「核弾頭」、ある時は「水の穴」、すぐにまた「核弾頭」に戻る…。関連する悪用方法も次々と現れています。現在の情報によれば、この「核弾頭」は事実となる可能性が高いですが、影響範囲はLog4jよりも小さいとのことです。とはいえ、関係する全ての方は速やかに更新し、後患を断つべきです!!!

また、開発者の皆さんにセキュリティ上の忠告です。決してユーザーの入力を信頼してはいけません。Log4j、fastjson、そして現在の React RCE も、この点が原因で問題を引き起こしました。実際の業務開発では、危険な箇所に対して必ずサンドボックスやホワイトリストなどの方法で厳格な検証を行い、悲劇を防いでください!!!

「紙上で得るは終に浅し、このことを知るには慎んで行うべし。」


参考資料

  • CVE-2025-55182 公式公告
  • React Security Advisory
  • ejpir による GitHub PoC
  • React Server Components ドキュメント
ツールをダウンロード