React2Shell が示す React/Next.js 脆弱性の深刻さ ~ 無視できなくなったソフトウェア サプライ チェーン攻撃

2025年後半から、npm の Shai-Hulud 事件を代表例として、ソフトウェアのサプライ チェーン攻撃が急増しています。それに伴い、CVE による脆弱性対応も一層厳格化されています。

React Server Components は、JavaScript ライブラリ「React」のサーバー機能に関するコンポーネントです。本脆弱性を悪用された場合、遠隔の攻撃者によって任意のコードを実行される恐れがあります。なお、「Next.js」など他製品において、同様の影響を受けます。

今回の問題に対する対策については、エクセルソフトもしくは本書作者 Alex Wang (王 子龍) https://jfrog.com/ja/platform/schedule-a-demo/ へお気軽に問い合わせください (日本語、英語の両方に対応)。

React2Shell がこれほど危険である理由は?

この攻撃が極めて重大な影響を持つ理由として、以下の特徴が挙げられます。

ゼロ設定での侵害 ~ デフォルト状態を狙う攻撃

この欠陥は、React Flight Protocol のコアとなるデシリアライズ処理ロジック自体に存在します。Next.js アプリケーションは、デフォルト設定で脆弱です。なぜなら、脆弱な App Router がデフォルトで使用されるためです。create-next-app で生成された標準的なプロジェクトは、開発者がカスタム コードを一行も書いていなくても即座に攻撃対象となります。
これは、新しくデプロイされたアプリケーションや広く利用されているアプリケーションの大多数が影響を受けることを意味し、攻撃対象領域は非常に広範です。

事前認証不要 (Pre-authentication)

攻撃者は、認証情報、セッション トークン、ユーザー操作を一切必要としません。悪意のあるペイロードは、アプリケーション独自の認証ロジックが実行される前に処理される React Flight Protocol を標的としています。必要なのは、インターネットに公開されたサーバーに対して、細工された HTTP リクエストを 1 回送信することだけです。

高い成功率を誇るリモート コード実行

このエクスプロイトにより、攻撃者は侵害されたサーバー プロセスを完全に制御できます。脆弱なシステムに対する攻撃成功率はほぼ 100% であり、攻撃者にとっては「設定して放置できる」攻撃手法となります。信頼性の高い公開 PoC コードの存在により、高度なスキルを持たない攻撃者でも容易に悪用可能となり、大規模な攻撃が急速に拡大します。実際に、公開から数時間以内に、実環境でのスキャンおよび攻撃の試みが確認されています。

JFrog のユーザー企業は、上記のソフトウエア サプライ チェーン攻撃に対する対応が簡単です。

そもそも「React2Shell」の脆弱性問題とは?

2025年 12月、重大な React の脆弱性である CVE-2025-55182 (および Next.js における対応する CVE-2025-66478) が、React のメンテナーによって公開されました。この脆弱性は、発見した研究者によって 「React2Shell」 と名付けられており、リモート (場合によっては未認証) の攻撃者による任意のコード実行につながります。

リモート攻撃者は、任意の React Server Function エンドポイントに対して悪意のある HTTP リクエストを細工し、React がそれをデシリアライズする際に、サーバー上で任意のコード実行を達成することが可能です。デフォルト設定における攻撃成功率はほぼ 100% と報告されています。

当初、この脆弱性に対する PoC (概念実証) エクスプロイトは公開されていませんでしたが、2025年 12月 4日に「非公式」の完全なリモート コード実行エクスプロイトおよび技術分析が公開されました。さらに翌日には、研究者本人によるオリジナルの PoC も公開されています。これにより、本脆弱性が外部攻撃者によって悪用される可能性は極めて高い状況となっています。

2025年 12月 9日

JFrog Security Research Team は、React2Shell の脆弱性の追跡を継続しています。最近の動きとして、この脆弱性を発見した研究者によるオリジナルの PoC (概念実証) が公開されました。この PoC は、本 CVE を悪用することの容易さを示しており、当該 CVE の実際の深刻度と影響の大きさを反映しています。

同チームは、 引き続き research.jfrog.com にて React2Shell に関する追跡および最新情報を提供しています。

2025年 12月 12日

2 件の高深刻度のサービス拒否 (DoS) 脆弱性である CVE-2025-55184 および CVE-2025-67779 が公開されました。これらの CVE は React2Shell と同じ利用シナリオに影響しますが、リモートコード実行 (RCE) として悪用することはできません。これらの CVE は React および Next.js の両方に影響し、対応する修正バージョンが新たにリリースされています。

React2Shell の影響を受けるのは誰か?

React Server Function エンドポイントを使用している React サーバー

React Server Function エンドポイントを使用している React サーバーは、脆弱であることが確認されています。アプリケーションのソース コード内に ‘use server’; ディレクティブが含まれているかを確認することで、脆弱な機能を使用しているかどうかを判別できます。これは Server Function が定義されていることを示します。

例:

async function requestUsername(formData) {

  'use server';

  const username = formData.get('username');

  // ...

}

export default function App() {

  return (

    <form action={requestUsername}>

      <input type="text" name="username" />

      <button type="submit">Request</button>

    </form>

  );

}

React Server Components をサポートしている React サーバー

React のアドバイザリでは、次のように述べられています。

「アプリケーションが React Server Function エンドポイントを実装していなくても、React Server Components をサポートしている場合は脆弱である可能性があります。」現時点では、React Server Function エンドポイントを使用していない場合でも、React Server Components をサポートしているだけで CVE-2025-55182 が悪用可能となる正確な条件は明らかになっていません。

そのため、アプリケーションが何らかの形で React Server Components をサポートしている場合は、影響を受けるコンポーネントを修正済みバージョンへアップグレードすることを強く推奨します (下記の表を参照)。

脆弱なコンポーネント脆弱なバージョン修正バージョン
react-server-dom-webpack19.0.0
19.1.0 – 19.1.1
19.2.0
19.0.1
19.1.2
19.2.1
react-server-dom-parcel19.0.0
19.1.0 – 19.1.1
19.2.0
19.0.1
19.1.2
19.2.1
react-server-dom-turbopack19.0.0
19.1.0 – 19.1.1
19.2.0
19.0.1
19.1.2
19.2.1
Next.js15.0.0 – 15.0.4
15.1.0 – 15.1.8
15.2.0 – 15.2.5
15.3.0 – 15.3.5
15.4.0 – 15.4.7
15.5.0 – 15.5.6
16.0.0 – 16.0.6
15.0.5
15.1.9
15.2.6
15.3.6
15.4.8
15.5.7
16.0.7
Next.js14.3.0-canary.77 以降のカナリア バージョンnpm install next@14を実行して、最新の安定版 14.x リリースにダウングレードします。
その他のフレームワーク脆弱な React RSC 実装をバンドルするフレームワーク/ライブラリ (例: Vite RSC plugin, Parcel RSC plugin, React Router RSC preview, RedwoodSDK, Waku)

App Router を使用している Next.js Web アプリケーション

最も可能性の高い攻撃ベクターは、Next.js Web アプリケーション (CVE-2025-66478) です。これらはデフォルト設定のままで脆弱であるためです。

たとえば、標準の create-next-app コマンドを使用し、推奨されるデフォルト設定で Next.js アプリケーションを作成すると、Next.js App Router が有効化されます。これにより、脆弱な React Server Function エンドポイントにアクセス可能となります。このような Next.js アプリケーションには app ディレクトリが含まれており、これは脆弱な App Router を使用していることを意味します

React2Shell をどのように緩和 (対策) できるか

CVE-2025-55182 および CVE-2025-66478 を解決する最も確実な方法は、影響を受けるパッケージを、上記の表に記載されている修正済みバージョンのいずれかへアップグレードすることです。

すぐにアップグレードできない場合でも、以下の回避策により、本脆弱性を悪用不可能な状態にすることができます。

  • Next.js アプリケーション
    App Router の機能をそれほど多く使用していない場合、Next.js の App Router 移行ガイドに従って、Pages Router へ戻す (移行する) ことが可能です。

JFrog を用いたソフトウエア サプライ チェーン脆弱性の対応

JFrog Platform とは

「JFrog Platform (JFrog プラットフォーム)」は、JFrog が提供する ソフトウェアのビルドからリリースまでのビルド成果物、依存関係、ライセンスを一元的に管理する、そしてセキュリティ ガバナンスを効かせるための統合プラットフォームです。Selfhosted と SaaS 版の両方を提供しています。
従来のツールが「アーティファクト管理」や「セキュリティ」など個別の役割に分かれていたのに対し、JFrog Platform は開発から運用までを End-to-End でカバーするのが特徴です。

JFrog Artifactory

JFrog Artifactory は、ソフトウェア開発におけるアーティファクト (成果物) の管理を効率化するためのリポジト リマネージャーです。Artifactory は、バイナリ ファイルやライブラリを扱うための強力なツールで、特に DevOps 環境や CI/CD パイプラインにおいて重要な役割を果たします。Mavenやnpm、Docker、NuGet、PyPI、Hugging face など、30 種類以上のパッケージ管理システムをサポートしているため、異なる技術スタックを一元的に管理することができます。

  • リモート リポジトリ
    Artifactory はリモート リポジトリを設定することで、Proxy で外部のリポジトリ (例: Maven Central, npm registry など) からのパッケージを一元的にキャッシュできます。これにより、依存関係を管理する際のネットワークの負荷を軽減し、ビルドの安定性を向上させることができます。
  • ローカル リポジトリ
    プロジェクトやチームが生成したバイナリやアーティファクトを管理するために、ローカル リポジトリを利用できます。これにより、成果物のバージョン管理や保存が容易になり、再利用や共有がしやすくなります。

JFrog Xray

JFrog Xray は、アーティファクトのセキュリティとコンプライアンスを強化するためのツールで、Artifactory と連携して使用います。Xray は、ソフトウェア開発プロセスの中で、使用されているライブラリや依存関係の脆弱性をスキャンし、リスクを評価することができます。

  • 脆弱性スキャニング
    Xray は、アーティファクトに含まれるオープンソースのライブラリやコンポーネントをスキャンし、既知の脆弱性を特定します。この情報は、NVD (National Vulnerability Database) や JFrog 独自のデータベースから更新されます。
  • コンプライアンス管理
    使用されているオープンソース コンポーネントがライセンス ポリシーに準拠しているかをチェックする機能があります。これにより、特定のライセンスを持つコンポーネントの使用を自動的に検出し、リスクを管理できます。
  • Deep スキャン
    アーティファクトを深く分析し、依存関係の階層を辿って各コンポーネントの脆弱性やライセンス情報を取得します。
  • 自動警告と通知
    脆弱性やコンプライアンス問題が新たに発見された場合、設定された警告機能によってチームに通知が送信され、迅速な対応が可能となります。
  • ダッシュボードとレポート
    Xray には、脆弱性やコンプライアンスの状況を一目で把握できるダッシュボードがあり、詳細なレポートを生成することができます。これにより、リスク管理の意思決定が容易になります。

JFrog Curation

Artifactory のリモートリポジトリ経由で外部の依存関係をキャッシュする際、Curation は Firewall としてポリシー違反の Action を監視し、ポリシーの設定によってキャッシュ ブロック、もしくは DryRun の承認フローが発生します。

また、Curation カタログ機能は、使用するオープンソース パッケージの脆弱性情報データを調べられます。バージョン履歴、セキュリティ脆弱性、OpenSSF スコア、ライセンス データ、運用リスク、依存関係や推移的な脆弱性の有無を確認します。1,200万 を超える OSS パッケージがカタログ化されており、簡単に参照できます。

対応の手順

  1. Artifactory と CI をインテグレーションし、ビルド時の外部パッケージ ダンロードを Artifactory Remote Repo 経由し、そしてビルドした成果物バイナリを Artifactory Local Repo に保存します。JFrog は、各 CI ツールに CLI を提供しており、さらに Virtual Repo という機能を使えば、簡単に設定できます。
  2. Xray 機能を利用し、キャッシュした OSS の脆弱性スキャンやビルドした成果物の脆弱性スキャンを行います。さらに Xray ポリシーを設定し、ビルドした成果物にポリシー違反があった場合、アラートおよびブロックダンロードを実施することで、2 次拡散を防げます。
  3. Curation 機能上でポリシーを設定し、Remote Repo でキャッシュする際の firewall を作ります。JFrog は各 OSS コミュニティにスキャン センサーを搭載しているため、リスクをリアルタイムになくします。

本記事や JFrog に関するご質問は、JFrog 日本正規代理店であるエクセルソフトまでお問い合わせください。


本記事は JFrog 社の許可を得て作成、公開しています。

世界の人気ソフトウェアを提供するエクセルソフトのメールニュース登録はこちらから。

タイトルとURLをコピーしました