2026年4月、セキュリティ研究者たちはNext.jsアプリケーションを標的にした大規模な攻撃キャンペーンを記録しました。CVSS 10.0(最高危険度)の脆弱性CVE-2025-55182(通称React2Shell)を悪用したこのキャンペーンでは、766のNext.jsホストが侵害され、クラウド認証情報やAPIキーが大量に窃取されています。Webアプリ開発者やDevOpsエンジニアにとって、今すぐ対応が必要な深刻な問題です。本記事では脆弱性の仕組みから具体的な対策まで、技術的な観点で解説します。
CVE-2025-55182とは何か 脆弱性の概要と影響範囲
CVE-2025-55182はReact Server Components(RSC)とNext.js App Routerに存在するリモートコード実行(RCE)脆弱性です。Cisco Talosのセキュリティリサーチチームが2025年後半に発見し、React2Shellという名称が付けられました。Common Vulnerability Scoring System(CVSS)の評価は満点の10.0であり、認証なしでリモートから任意コードを実行できる最高危険度の脆弱性です。
影響を受けるバージョンの範囲は非常に広く、現在稼働する多くのNext.jsアプリケーションが対象になります。Wiz社のリサーチによると、クラウド環境の39%がNext.jsあるいはReactの脆弱なバージョンを使用しており、44%のクラウド環境でNext.jsがインターネットに公開された状態になっているとのことです。
影響を受けるバージョンと修正バージョンの対応をまとめます。
Reactバージョン系列 | 脆弱なバージョン | 修正バージョン |
|---|---|---|
React 19.0.x | 19.0.0 | 19.0.1以降 |
React 19.1.x | 19.1.0 〜 19.1.1 | 19.1.2以降 |
React 19.2.x | 19.2.0 | 19.2.1以降(完全修正は19.2.3) |
Next.js 15.x / 16.x | App Router使用時 | react-server-domの修正バージョンに追従 |
加えて、関連するCVEとして情報漏洩のCVE-2025-55183、サービス拒否(DoS)を引き起こすCVE-2025-55184とCVE-2025-67779も存在します。

攻撃の仕組み Flightプロトコルの危険な脱シリアライズ
React2Shellの本質はFlightプロトコルにおける安全でない脱シリアライズ(Unsafe Deserialization)です。ReactのServer Componentsは、サーバーサイドでレンダリングした結果をクライアントに転送するためにReact Flightプロトコルを使用しています。このプロトコルの実装に致命的な欠陥がありました。
攻撃の仕組みは次のとおりです。攻撃者は細工したペイロードをサーバーに送信します。サーバー側でFlightプロトコルのメッセージを処理する際、value.hasOwnProperty(i)という内部プロパティチェックに対して、攻撃者が制御するオブジェクトを上書きできます。このオブジェクトはJavaScriptのプロトタイプチェーンを悪用し、任意のコードを実行させます。
この攻撃が特に危険な理由は認証が不要な点にあります。Next.js App Routerを使用するアプリケーションは、デフォルトでReact Flightプロトコルのエンドポイント(通常は/__rscや内部ルート)を公開しています。攻撃者はこのエンドポイントに直接リクエストを送るだけで、ターゲットサーバー上で任意のコードを実行できます。サーバーサイドで実行されるため、環境変数、ファイルシステム、ネットワークへのフルアクセスが可能になります。
概念実証(PoC)コードはCVE開示の数日以内に公開されており、技術的なスキルがさほど高くない攻撃者でも悪用できる状態になっています。これが766ものホストが短期間で侵害された背景の一つです。
実際の攻撃キャンペーン UAT-10608による侵害の全容
この脆弱性を実際に悪用した攻撃キャンペーンは、Cisco Talosによって追跡グループUAT-10608として記録されています。このグループは過去にも複数のWebアプリケーション脆弱性を利用したキャンペーンを展開してきた攻撃者です。
今回のキャンペーンでは、まず自動化されたスキャンツールを使ってインターネット上のNext.jsホストを探索します。脆弱なバージョンが稼働しているホストを特定したら、CVE-2025-55182のエクスプロイトを使ってリモートコード実行を行います。初期侵害に成功すると、攻撃者はNEXUS Listener V3と呼ばれる独自の情報収集フレームワークをターゲットサーバーにインストールします。
NEXUS Listener V3はGUIを備えた高機能な情報窃取ツールです。複数の侵害済みホストから収集したデータを一元管理するダッシュボードを持ち、盗み出したデータをカテゴリー別に整理・表示できます。このツールの存在は、攻撃が組織的かつ計画的に実施されていることを示しています。
2026年4月初頭の時点で、このキャンペーンにより766のNext.jsホストが侵害されています。侵害されたホストは北米、欧州、アジア太平洋など複数のリージョンにわたり、AWS、GCP、Azureのクラウド上で稼働するサービスが含まれています。
窃取されたデータの種類と被害の実態
NEXUS Listener V3が収集するデータのカテゴリーは多岐にわたります。特にNext.jsアプリケーションのサーバーサイドで実行されるという特性上、通常はユーザーに公開されない機密情報に直接アクセスできます。
窃取されるデータの種類をまとめます。
カテゴリー | 具体的なデータ |
|---|---|
クラウド認証情報 | AWS IAM一時的認証情報、GCPサービスアカウントトークン、Azure認証情報 |
コンテナ・オーケストレーション | KubernetesサービスアカウントトークンとCA証明書、Dockerの設定ファイル |
SSH関連 | SSHの秘密鍵、既知のホストファイル |
APIキー(決済・AI系) | Stripe、OpenAI、Anthropic、NVIDIA NIM、SendGrid、BrevoのAPIキー |
コード管理 | GitHub、GitLabのアクセストークン |
通信・メッセージング | TelegramボットトークンなどのBotトークン |
データベース | PostgreSQL、MySQL、MongoDBなどのデータベース接続文字列 |
プロセス情報 | 実行中プロセスの一覧と詳細情報 |
特に深刻なのがAWS IAM一時的認証情報の窃取です。EC2インスタンスやECSタスクで動作するNext.jsアプリケーションはIMDSv1/v2を通じてIAMロールの認証情報にアクセスできますが、これらはサーバーサイドの環境変数や内部APIとして参照可能です。攻撃者がこれらを入手すれば、該当アカウントのAWSリソースへの不正アクセスが可能になります。
Stripeや決済系のAPIキー窃取は直接的な金銭的損害につながります。OpenAIやAnthropicのAPIキーはコスト爆発の原因になるほか、窃取したキーを使った不正なAI利用につながる可能性があります。

影響を受けるバージョンと修正バージョンの確認方法
自社サービスが影響を受けるか確認するには、まずプロジェクトで使用しているReactとNext.jsのバージョンを確認します。
package.jsonまたはnpm ls コマンドでreact-server-domパッケージのバージョンを確認する方法が確実です。
Reactのパッケージバージョン確認コマンドとその見方をまとめます。
確認コマンド | 確認内容 |
|---|---|
| Webpackバンドラー向けのFlightプロトコル実装バージョン |
| Turbopack向けのFlightプロトコル実装バージョン |
| Reactコアのバージョン |
| ロックファイルでの正確なバージョン確認 |
App Routerを使用していないNext.js(Pages Routerのみ)の場合、React Server Componentsは使用されていないため、CVE-2025-55182の直接的な影響を受けません。ただし関連CVEのDoS脆弱性(CVE-2025-55184、CVE-2025-67779)は依然として影響する可能性があるため、バージョンアップは推奨されます。
Pages RouterとApp Routerの両方を使用しているアプリケーションはApp Router側でRSCが有効化されているため、対応が必要です。
今すぐ実施すべき対策と恒久的な防御策
CVE-2025-55182への対応は段階的に実施します。まず最優先で行うべき即時対応、次に継続的な防御強化の順で説明します。
即時対応として最も重要なのはReactのパッチバージョンへのアップデートです。react-server-domシリーズの修正バージョン(19.0.1、19.1.2、19.2.1以降)に更新します。完全な修正が含まれているバージョンは19.2.3です。Next.jsプロジェクトの場合、Next.js自体のアップデートも合わせて実施することで依存関係の整合性を保てます。
AWSを使用している場合、AWS WAFのマネージドルールセット「AWSManagedRulesKnownBadInputsRuleSet v1.24以降」を適用することで、CVE-2025-55182の既知のエクスプロイトパターンをウェブアプリケーションファイアウォールレベルでブロックできます。パッチ適用が即座にできない場合の暫定対策として有効です。
恒久的な防御策として実施すべき事項を優先度順にまとめます。
優先度 | 対策 | 効果 |
|---|---|---|
最優先 | react-server-domの最新パッチバージョンへの更新 | 脆弱性の根本的な解決 |
高 | AWS WAF AWSManagedRulesKnownBadInputsRuleSet v1.24+ 適用 | 既知エクスプロイトのブロック |
高 | 環境変数の見直しと最小権限IAMロールへの変更 | 侵害時の被害範囲を限定 |
中 | IMDSv2の強制化(EC2使用時) | メタデータサービスへの不正アクセス防止 |
中 | APIキーのローテーション(侵害疑い時) | 窃取済みキーの無効化 |
中 | CloudTrailやVPCフローログによる異常検知 | 侵害の早期発見 |
継続 | 依存パッケージの定期的な脆弱性スキャン(npm audit, Dependabot等) | 新たな脆弱性への迅速な対応 |
侵害が疑われる場合は、まずAPIキーとクラウド認証情報をローテーションし、影響を受けた可能性のあるシステムのアクセスログを確認します。AWSの場合はGuardDutyのアラートや、CloudTrailの異常なAPI呼び出しパターンが侵害の痕跡となります。
今回の事件は、人気のあるOSSフレームワークのコアライブラリに存在した脆弱性が、いかに広範囲に影響するかを示しています。Next.js App RouterとReact Server Componentsは多くのプロダクションサービスで採用されているため、定期的な依存パッケージの更新と脆弱性情報の収集を開発フローに組み込むことが重要です。セキュリティを後回しにせず、継続的なアップデートと監視体制の整備を進めていきましょう。
















