React/Next.jsに最大深刻度のRCE脆弱性「React2Shell」が発覚
React Server Components(RSC)の「Flight」プロトコルに、「React2Shell」と名付けられた最大深刻度(CVSSスコア10/10)の脆弱性が発見されました。この脆弱性により、認証なしでReactおよびNext.jsアプリケーションにおいてリモートコード実行(RCE)が可能となります。このセキュリティ問題は、安全でないデシリアライゼーションに起因しており、React向けにCVE-2025-55182、Next.js向けにCVE-2025-66478(National Vulnerability Databaseでは却下)が割り当てられています。
脆弱性の詳細と影響
セキュリティ研究者のLachlan Davidson氏が11月29日にこの脆弱性を発見し、Reactに報告しました。攻撃者は、特別に細工されたHTTPリクエストをReact Server Functionのエンドポイントに送信することでRCEを達成できます。Reactのセキュリティアドバイザリでは、「アプリケーションがReact Server Functionエンドポイントを実装していない場合でも、React Server Components [RCS]をサポートしている場合は脆弱である可能性がある」と警告しています。
以下のパッケージがデフォルト設定で影響を受けます:
- react-server-dom-parcel
- react-server-dom-turbopack
- react-server-dom-webpack
ReactはMetaが管理するオープンソースのJavaScriptライブラリであり、Next.jsはVercelが管理するReactベースのフレームワークです。両者ともフロントエンド開発において広く採用されています。
広範囲にわたる影響と悪用の容易さ
Wizクラウドセキュリティプラットフォームの研究者らは、この脆弱性が悪用しやすく、影響を受けるパッケージのデフォルト設定に存在すると警告しています。彼らの調査によると、可視性のある全クラウド環境の39%に、CVE-2025-55182またはCVE-2025-66478、あるいはその両方に脆弱なNext.jsまたはReactのインスタンスが存在するとのことです。同様の脆弱性は、Vite RSCプラグイン、Parcel RSCプラグイン、React Router RSCプレビュー、RedwoodSDK、Wakuなど、React Serverを実装する他のライブラリにも存在する可能性があります。
技術的背景と対処法
ソフトウェアサプライチェーンセキュリティ企業Endor Labsは、React2Shellが「サーバーが受信したRSCペイロードの構造を適切に検証しない、論理的に安全でないデシリアライゼーションの脆弱性」であると説明しています。攻撃者からの不正なデータを受信した際に検証が失敗し、結果としてサーバーのコンテキストで特権的なJavaScriptコードが実行されることになります。Davidson氏は、偽のProof-of-Concept(PoC)エクスプロイトが出回っていることについても警告しており、注意が必要です。
修正プログラムと推奨事項
Reactによると、この脆弱性はバージョン19.0、19.1.0、19.1.1、19.2.0に存在します。Next.jsは、実験的なカナリアリリース14.3.0-canary.77以降、および15.xと16.xブランチのパッチ適用前の全リリースが影響を受けます。
開発者には、以下のバージョンにアップグレードすることが強く推奨されています:
- React: 19.0.1、19.1.2、19.2.1
- Next.js: 15.0.5、15.1.9、15.2.6、15.3.6、15.4.8、15.5.7、16.0.7
組織は自身の環境を監査し、脆弱なバージョンを使用している場合は速やかに適切なリスク軽減策を講じる必要があります。
これらのソリューションの人気は非常に高く、Node Package Manager(NPM)ではReactが週に約5,580万回、Next.jsが約1,670万回ダウンロードされています。
