2025.12.23

もう無視できない、増えているソフトウエアサプライチェーン脆弱性問題: React2Shell は引き続きクラウドインフラを攻撃しています

Alex Wang
JFrog Japan
このエントリーをはてなブックマークに追加

2025年後半以来、npm Shai-Hulud事件を代表としたソフトウエアサプライチェーン攻撃が非常に増えているなか、CVEの脆弱性問題も厳重化になっています。

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

本対策の詳細について、お問い合わせフォームもしくは執筆者Alex Wang(王 子龍) wanga@jfrog.com(日本語、英語の両方に対応)へお気軽に問い合わせいただけたら幸いです。

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

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

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

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

事前認証不要(Pre-authentication

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

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

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

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

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

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

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

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

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

JFrogのSecurity Research Teamは、 引き続き research.jfrog.com にて React2Shell に関する追跡および最新情報の提供を行っています。

20251212日)
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-webpack

19.0.0
19.1.0 - 19.1.1
19.2.0

19.0.1
19.1.2
19.2.1

react-server-dom-parcel

19.0.0
19.1.0 - 19.1.1
19.2.0

19.0.1
19.1.2
19.2.1

react-server-dom-turbopack

19.0.0
19.1.0 - 19.1.1
19.2.0

19.0.1
19.1.2
19.2.1

Next.js

15.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.js

14.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 を使用していることを意味します

jfrog-202512-01.png

jfrog-202512-02.png

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

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

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

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

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

まずJFrog Platformとは

「JFrog Platform(JFrogプラットフォーム)」は、JFrogが提供する ソフトウェアのビルドからリリースまでのビルド成果物、Dependency、ライセンスを一元的に管理する、そしてセキュリティガバナンスを効かせるための統合プラットフォーム です。SelfhostedとSaaS版の両方を提供しています。

従来のツールが「アーティファクト管理」や「セキュリティ」など個別の役割に分かれていたのに対し、JFrog Platformは開発から運用までをEnd-to-Endでカバーするのが特徴です。

JFrog Artifactoryについて

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

リモートリポジトリ:

Artifactoryはリモートリポジトリを設定することで、Proxyで外部のリポジトリ(例:Maven Central, npm registryなど)からのパッケージを一元的にキャッシュできます。これにより、依存関係を管理する際のネットワークの負荷を軽減し、ビルドの安定性を向上させることができます。

ローカルリポジトリ:

プロジェクトやチームが生成したバイナリやアーティファクトを管理するために、ローカルリポジトリを利用できる。これにより、成果物のバージョン管理や保存が容易になり、再利用や共有がしやすくなります。

JFrog Xrayについて

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

脆弱性スキャニング:

Xrayは、アーティファクトに含まれるオープンソースのライブラリやコンポーネントをスキャンし、既知の脆弱性を特定します。この情報は、NVDNational Vulnerability Database)やJFrog独自のデータベースから更新されます。

コンプライアンス管理:

使用されているオープンソースコンポーネントがライセンスポリシーに準拠しているかをチェックする機能があります。これにより、特定のライセンスを持つコンポーネントの使用を自動的に検出し、リスクを管理できます。

Deepスキャン:

アーティファクトを深く分析し、依存関係の階層を辿って各コンポーネントの脆弱性やライセンス情報を取得します。

自動警告と通知:

脆弱性やコンプライアンス問題が新たに発見された場合、設定された警告機能によってチームに通知が送信され、迅速な対応が可能となります。

ダッシュボードとレポート:

Xrayには、脆弱性やコンプライアンスの状況を一目で把握できるダッシュボードがあり、詳細なレポートを生成することができます。これにより、リスク管理の意思決定が容易になります。

JFrog Curationについて

Artifactoryのリモートリポジトリ経由で外部の依存関係をキャッシュする際、CurationはFirewallとしてポリシー違反のActionを監視し、ポリシーの設定によってキャッシュブロック、もしくはDryRunの承認フローが発生します。
また、Curationカタログ機能は、使用するオープンソースパッケージの脆弱性情報データを調べられます。バージョン履歴、セキュリティ脆弱性、OpenSSFスコア、ライセンスデータ、運用リスク、依存関係や推移的な脆弱性の有無を確認します。1,200万を超えるOSSパッケージがカタログ化されており、簡単に参照できます。

    jfrog-202512-03.jpg

    対応の手順

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

    JFrogの詳細はこちら

    製品の概要やライセンスなどを確認いただけます。
    ご不明点がございましたら、遷移先ページの「お問い合わせ」より
    お気軽にお問い合わせください。

    この記事の著者:Alex Wang (王 子龍)

    JFrog Japan

    戦略コンサル時代、IT、自動車、製造などの業界に対して、アジャイル、DevOpsのコーチとして開発環境構築、CICD構築などのプロジェクトをリードしてきました。現在、DevSecOpsやLiquid Softwareを日本への展開・普及を行っています。

    Linked-in: https://www.linkedin.com/in/alex-wang-662290150/

    Exin DevOps Professional /PMI Project management Professional/PCI・DSS Japan member/Aoyama Gakuin University MBA holder

    • 関連キーワード:
    • JFrog

    DevOps Hubのアカウントをフォローして
    更新情報を受け取る

    • Like on Feedly
      follow us in feedly

    関連記事

    このエントリーをはてなブックマークに追加

    お問い合わせ

    DevOpsに関することなら
    お気軽にご相談ください。

    Facebook、TwitterでDevOpsに関する
    情報配信を行っています。