📅 2026年01月29日 12:35
React2Shell (CVE-2025-55182): The Deserialization Ghost in the RSC Machine - React2Shell(CVE-2025-55182):RSCマシンの逆シリアライズの幽霊
Reactで起きた“フレームワークレベルのRCE”――あなたのNext.js/React Server Componentsは本当に安全か?
要約
React Server Components(RSC)のFlightプロトコルを扱うサーバ側デコーダに逆シリアライズの脆弱性が見つかり、未認証でのリモートコード実行(CVE-2025-55182)を引き起こす可能性があります。パッチ未適用の環境は即時対応が必要です。
この記事を読むべき理由
多くの日本企業・スタートアップがNext.jsやRSCを採用済み/検討中であり、フレームワーク内部で処理が完結する脆弱性は従来の認証・ミドルウェア対策を無効化します。実環境で既に自動化攻撃やクラウド侵害が発生しています。
詳細解説
- Flightプロトコル:RSCではサーバがコンポーネント木やprops、サーバ参照などを独自のシリアライズ形式(Flight)でクライアント/サーバ間に流します。サーバ側で受け取ったシリアライズデータをデコードしてJavaScriptオブジェクトに再構築します。
- 根本原因:サーバ側デコーダが入力ペイロードのプロパティ検証(hasOwnProperty 等)を行わず、proto などを通じたプロトタイプ汚染を許してしまう「Unsafe deserialization」。これによりすべてのオブジェクト挙動を乗っ取れる可能性があります。
- 攻撃チェーン(概要):
- フェイクなChunkオブジェクトを含むmultipartリクエストでFlightエンドポイントへPOST。
- thenなどをシャドウし自己参照ループを作りawaitを強制。
- $B(Blob)や$@参照を悪用して内部ハンドラを誘導。
- Nodeのプロセス/child_processへ到達し任意コマンド実行(reverse shell、curlでメタデータ取得等)。
- 影響範囲:React 19系の一部・Next.js(15.x〜16.x)・react-server-dom-webpack等。Canary/experimentalビルドも危険。クラウド関係(Vercel, AWS Lambda等)での広範囲な悪用報告あり。
- なぜ危険か:Flightのデコードはフレームワーク層で行われ、ミドルウェア/認証を通る前に処理されるため、アプリレベルの保護が無効化されやすい。
実践ポイント
- まずバージョン確認と更新(最短で適用):
# bash npm install next@latest react@latest react-dom@latest # react-server-dom-webpack / turbopack も最新へ - 当面の緩和策(WAF等でブロック):
- Next-Action / rsc-action-id 等のヘッダを使ったPOSTを監視/遮断。
- ペイロード内の “$@.*:proto” やプロパティトラバーサル文字列をブロック。
- 異常に複雑な multipart/form-data をRSCエンドポイントへ送るリクエストを制限。
- 検出/監視:
- Nodeからの sh/bash/curl/wget 等のプロセス生成を監視(Falco, Sysdigなど)。
- 不審な外向き接続(メタデータエンドポイントや既知C2、マイニングプール)を検出。
- 開発運用での対策:
- lockfile(package-lock/yarn.lock)を精査し脆弱パッケージを排除。
- CIで依存関係チェック(npm audit、Snyk等)を自動化。
- Server Actions / RSCを使うエンドポイントは最小化し、外部入力を最小限にする。
- 日本市場向け注意点:クラウド上のサーバレスやエッジ環境でのデプロイが多い組織は、短時間で広範囲に被害が広がりやすい。SIer/ベンダーに任せている部分のnode_modules監査を依頼すること。
この記事を読んだらまず「自分のプロジェクトのReact/Next.jsバージョン確認」と「パッチ適用」を行ってください。