セキュリティ17分で読める

React2ShellでNext.js 766ホスト侵害——CVSS 10.0の認証情報窃取攻撃

CVSS 10.0——脆弱性スコアの最高値を記録した「React2Shell」が、Next.jsを採用する766以上のホストを侵害した。 攻撃者は認証不要の単一HTTPリクエストでサーバー上の任意コードを実行し、AWSシークレットキー、SSH秘密鍵、Stripe APIキー、データベース認証情報など、あらゆる種類の機密データを根こそぎ窃取している。Cisco Talosはこの攻撃キャンペーンを脅威クラスター「UAT-10608」として追跡しており、被害は複数のリージョンとクラウドプロバイダーにまたがっている。

React Server Componentsという比較的新しいアーキテクチャを狙ったこの脆弱性は、Next.jsを本番環境で運用するすべての開発チームにとって緊急の対応が求められる事態だ。

React2Shell(CVE-2025-55182)とは何か

React2Shellは、CVE-2025-55182として登録されたReact Server Components(RSC)に起因するリモートコード実行(RCE)脆弱性だ。Next.jsがサーバー側でReact Server Componentsをレンダリングする際の入力検証の不備を突くもので、攻撃者は認証なしで、たった1つのHTTPリクエストを送るだけでサーバー上で任意のコードを実行できる。

React Server Componentsの仕組みと脆弱性の関係

React Server Components(RSC)は、React 18以降で導入されたサーバーサイドレンダリングの新しいパラダイムだ。従来のクライアントサイドレンダリングと異なり、コンポーネントのロジックがサーバー上で実行されるため、データベースへの直接アクセスやファイルシステムの操作が可能になる。Next.js 13以降のApp Routerではこの仕組みがデフォルトで有効化されている。

問題は、RSCがサーバー上で実行されるという性質そのものにある。クライアントからサーバーに送信されるシリアライズされたコンポーネントデータの検証が不十分な場合、攻撃者はこのデータに悪意あるペイロードを注入できる。サーバーがこのペイロードをデシリアライズして実行する瞬間に、RCE(リモートコード実行)が成立する。

CVE-2025-55182が特に危険な理由は以下の3点だ。

  • 認証不要(Pre-auth): ログインや認証トークンなしで攻撃可能
  • 単一リクエスト: 複雑な多段階攻撃ではなく、1回のHTTPリクエストで完結
  • WAFバイパス: 一般的なWeb Application Firewallのルールを回避する手法が確認されている

この図は、React2Shell攻撃の全体フローを示しています。攻撃者のHTTPリクエスト送信から、Next.jsサーバーでのRCE発火、認証情報の窃取、C2サーバーへのデータ送信までの4段階を図解しています。

React2Shell攻撃フロー — 攻撃者がHTTPリクエストでNext.jsサーバーのRCEを発火させ、認証情報を窃取してC2サーバーに送信する流れ

攻撃キャンペーン「UAT-10608」の実態

Cisco Talosが「UAT-10608」として追跡するこの攻撃キャンペーンは、単なる脆弱性の悪用にとどまらない。高度に組織化された認証情報ハーベスティング(収穫)オペレーションだ。

攻撃の流れ

攻撃は次のように進行する。

第1段階: 初期アクセス 攻撃者はインターネットに公開されたNext.jsアプリケーションを自動スキャンし、脆弱なバージョンを特定する。CVE-2025-55182を悪用した単一のHTTPリクエストでリバースシェルを確立し、サーバーへの侵入口を開く。

第2段階: ペイロード展開 初期アクセスの確保後、多段階の認証情報ハーベスティングツールがサーバーに展開される。このツールは以下のような場所を体系的に走査する。

  • 環境変数(.envファイル、プロセス環境)
  • 設定ファイル(データベース接続文字列、API設定)
  • SSHディレクトリ(~/.ssh/配下の秘密鍵)
  • シェル履歴(~/.bash_history~/.zsh_history
  • クラウドプロバイダーのメタデータエンドポイント

第3段階: データ送信 収集した認証情報は「NEXUS Listener」と呼ばれるC2(Command & Control)インフラに送信される。NEXUS ListenerにはWeb GUIが搭載されており、攻撃者は窃取したデータをブラウザ上で一覧・検索・管理できる。

窃取される認証情報の種類

攻撃者が狙う認証情報は多岐にわたる。

この図は、React2Shellによって窃取されるデータの4つのカテゴリ(クラウド認証情報、データベース、開発・CI/CD、決済・外部API)と、それぞれの影響範囲を示しています。

React2Shellで窃取される認証情報の種類と影響範囲 — クラウド、データベース、開発ツール、決済APIの4カテゴリ

具体的には以下のデータが窃取対象となっている。

カテゴリ窃取対象想定される二次被害
クラウドAWSシークレットキー、IAMクレデンシャルインフラ全体の乗っ取り、暗号通貨マイニング
データベースPostgreSQL、MySQL、MongoDB接続情報顧客データの大量漏洩、ランサムウェア
開発ツールGitHub/GitLabトークン、SSH秘密鍵ソースコード窃取、サプライチェーン攻撃
決済Stripe APIキー不正決済、顧客カード情報へのアクセス
AI APIOpenAI/Anthropic APIキーAPI利用料の不正請求(数万ドル規模も)
通信Telegramボットトークンボットの乗っ取り、フィッシング配信
システムシェルコマンド履歴内部ネットワーク構成の把握、横展開の足がかり

特に注目すべきは、OpenAIやAnthropicのAPIキーが窃取対象に含まれている点だ。AIサービスのAPIキーは高額な利用料が紐づいており、窃取されれば短時間で数万ドルの不正利用が発生する事例が報告されている。

766ホスト侵害の規模感

確認されている被害は766以上のホストに及び、複数のリージョンとクラウドプロバイダーにまたがっている。この数字は氷山の一角である可能性が高い。

なぜ被害が急速に拡大したのか

Next.jsは世界で最も広く使われているReactフレームワークの一つであり、Vercelをはじめとする主要なホスティングプラットフォームでの採用が進んでいる。npm downloadsベースでは週間2000万回以上のダウンロードを記録しており、SaaS企業からスタートアップ、大企業まで幅広く本番環境で使用されている。

脆弱性の悪用が容易であることも被害拡大の要因だ。認証不要で単一のHTTPリクエストで攻撃が成立するため、自動化されたスキャンツールによる大規模な攻撃が可能だった。WAFをバイパスする手法も確認されており、一般的な防御策では防げなかったケースも多い。

2026年の主要Web脆弱性との比較

React2Shellの深刻度を理解するため、2026年に報告された他の主要なWeb関連脆弱性と比較する。

脆弱性CVECVSS影響範囲認証要否攻撃の複雑さ
React2ShellCVE-2025-5518210.0Next.js(RSC利用環境)不要低(単一リクエスト)
Log4ShellCVE-2021-4422810.0Java(Log4j利用環境)不要
MOVEit脆弱性CVE-2023-343629.8MOVEit Transfer不要
Spring4ShellCVE-2022-229659.8Spring Framework不要
Citrix BleedCVE-2023-49669.4Citrix NetScaler不要

React2ShellはCVSSスコア10.0という点でLog4Shellと同等の深刻度を持つ。しかし、Next.jsがフロントエンドフレームワークとして広く認知されているため、「フロントエンド=クライアントサイド=安全」という誤った認識を持つ開発者が多く、サーバーサイドの脆弱性対策が手薄になりがちな点が特有のリスクだ。

Log4Shellが2021年末に発見された際は、Javaエコシステム全体に巨大な影響を与えた。React2Shellも同様に、JavaScriptエコシステムにおけるサーバーサイドセキュリティへの意識を根本的に変える契機となる可能性がある。

日本への影響——Next.js大国としてのリスク

日本はNext.jsの採用率が世界的に見ても高い市場だ。特に以下のような分野で広く使われている。

日本でのNext.js利用状況

  • SaaS企業: SmartHR、freee、LayerXなど、日本の主要SaaS企業の多くがNext.jsを採用
  • ECサイト: Shopify連携やヘッドレスコマース基盤としてNext.jsが急速に普及
  • メディアサイト: 大手メディアのフロントエンドリニューアルでNext.jsへの移行が進行中
  • スタートアップ: 日本のテックスタートアップの開発基盤として最も人気のあるフレームワークの一つ

日本特有のリスク要因

日本市場では、以下の理由からReact2Shellの影響が特に深刻になる可能性がある。

英語情報との時差: セキュリティアドバイザリは英語で最初に発表されるため、日本語環境のみで情報収集しているチームは対応が遅れやすい。CVEの公開から日本語の解説記事が出回るまでに数日のラグがあり、その間に攻撃を受けるリスクがある。

受託開発の構造的課題: 日本のWeb開発はSIerや受託開発会社が多く関わっている。納品後のセキュリティパッチ適用が契約外だったり、保守契約がなかったりするケースでは、脆弱性が長期間放置される危険性がある。

個人情報保護法との関係: React2Shellによって顧客データが漏洩した場合、改正個人情報保護法に基づく報告義務が発生する。漏洩規模によっては企業の信頼に大きなダメージを与える。

Vercelユーザーへの影響

VercelはNext.jsの開発元であり、最も多くのNext.jsアプリケーションをホスティングするプラットフォームだ。Vercelは脆弱性の公開後、迅速にプラットフォームレベルでの緩和策を展開したとされるが、セルフホスト環境(AWS、GCP、Cloud Runなど)で運用しているユーザーは自分でパッチを適用する必要がある。

Vercelの管理画面では、デプロイされているNext.jsのバージョンを確認できるため、自社のアプリケーションが脆弱なバージョンかどうかを即座にチェックすることが重要だ。

対策と緩和策

即座に実施すべき対策

1. Next.jsのバージョン確認とアップデート

まず自社で運用しているNext.jsのバージョンを確認する。package.jsonnextパッケージのバージョンを確認し、パッチが適用された最新バージョンにアップデートする。

# バージョン確認
npm list next

# アップデート
npm install next@latest

2. 環境変数の棚卸しとローテーション

すでに侵害されている可能性を前提に、サーバー上のすべての認証情報をローテーション(再発行)する。

  • AWSアクセスキーの再生成
  • データベースパスワードの変更
  • SSH鍵の再生成
  • Stripe APIキーの再発行
  • GitHub/GitLabトークンの無効化と再発行
  • AI APIキー(OpenAI、Anthropic等)の再発行

3. 侵害の痕跡調査(IOC確認)

Cisco Talosが公開しているIOC(Indicators of Compromise)を確認し、自社環境に不審な通信や不明なプロセスがないか調査する。特にNEXUS ListenerのC2サーバーへの通信が発生していないか、ネットワークログを確認する。

中長期的な対策

WAFルールの強化: React2Shell特有のリクエストパターンをブロックするWAFルールを追加する。ただし、攻撃者はWAFバイパス手法を持っているため、WAFだけに頼るのは危険だ。

ランタイムセキュリティの導入: サーバー上で不審なプロセス実行やファイルアクセスを検知するランタイム保護ツール(Falco、Sysdigなど)の導入を検討する。

環境変数の管理方法の見直し: .envファイルにシークレットを直接記載する運用から、AWS Secrets Manager、GCP Secret Manager、HashiCorp Vaultなどのシークレット管理サービスへの移行を進める。

サーバーサイドJavaScriptのセキュリティ意識向上: RSCやServer Actionsなど、サーバーで実行されるJavaScriptコードに対して、従来のバックエンド開発と同等のセキュリティ基準を適用する。入力検証、サニタイゼーション、最小権限の原則を徹底する。

教訓——「フロントエンド=安全」の幻想

React2Shellは、モダンWebフレームワークのアーキテクチャ変化がセキュリティに与える影響を如実に示した事例だ。

React Server Componentsの登場により、「フロントエンド」と「バックエンド」の境界が曖昧になった。Next.jsのApp Routerでは、同じファイル内にクライアントコードとサーバーコードが共存する。このパラダイムシフトを理解せず、フロントエンドコードのセキュリティを軽視することは、サーバーサイドの致命的な脆弱性を見逃すことにつながる。

また、NEXUS ListenerのようなC2インフラがWeb GUIを備えている点は、攻撃者側のツールが高度化していることを示している。窃取した認証情報を効率的に管理・活用するためのオペレーション体制が整備されており、攻撃の「産業化」が進んでいる現実を直視する必要がある。

まとめ——今すぐ取るべき3つのアクション

React2Shell(CVE-2025-55182)は、Next.jsを利用するすべての組織にとって緊急対応が必要な脆弱性だ。CVSS 10.0という最高深刻度、認証不要の単一リクエスト攻撃、766以上のホストが侵害済みという事実が、その深刻さを物語っている。

以下の3つのアクションを今すぐ実行してほしい。

  1. Next.jsのバージョンを今すぐ確認・アップデートする: npm list nextでバージョンを確認し、パッチ済みの最新バージョンに更新する。Vercelでホスティングしている場合は管理画面からバージョンを確認し、セルフホスト環境では手動でアップデートを実施する。
  2. すべての認証情報をローテーションする: 侵害の有無にかかわらず、環境変数に保存されているAWSキー、DBパスワード、APIトークン、SSH鍵をすべて再発行する。「やりすぎ」くらいがちょうどいい。
  3. サーバーサイドJavaScriptのセキュリティ体制を見直す: RSCやServer Actionsに対して、入力検証やサニタイゼーションなどのバックエンド相当のセキュリティ対策が施されているか確認する。WAFルールの追加やランタイムセキュリティの導入も検討する。

React2Shellの教訓は明確だ。フロントエンドフレームワークがサーバーサイドに進出した現代において、「フロントエンド開発者はセキュリティを気にしなくていい」という時代は完全に終わった。

この記事をシェア