React2Shell(CVE-2025-55182)は、React Server Components(RSC)がHTTPリクエストを復元する処理の欠陥により、認証なしでサーバー上の任意コードを実行される脆弱性です。対応の中心は修正版への更新です。ただしNext.jsはRSCの実装を本体に同梱しているため、npm ls react-server-dom-webpack の結果に同梱分は出ません。これを「影響なし」と読むのは誤りです。初回の修正後もRSCとNext.jsには後続の脆弱性が続いており、2025年12月の修正版で止めたアプリには、構成によって2026年に公表されたリモートコード実行が残ります。この記事では、脆弱性の仕組みと影響版、next の版での判定とlockfileの判定スクリプト、2026年10月31日時点の推奨版への更新、公開していたサーバーの事後対応までを順に示します。
まとめ:nextの版による影響判定・後続脆弱性への更新・シークレット再発行
判定は npm ls next の版で行います。React2Shellの対象は、App RouterでRSCを使うNext.jsの各系列の初回修正版未満(後述の表)と14.3.0-canary.77以降のカナリア版で、Next.js以外では react-server-dom-webpack/-turbopack/-parcel の19.0.0・19.1.0・19.1.1・19.2.0です。React本体(react・react-dom)の版は判定に使いません。
更新先は2025年12月の初回修正版ではなく、後続の脆弱性まで直った版にします。2026年10月31日時点ではNext.jsが16.4.1以上(latestは16.4.3)か15.5.28、RSCパッケージが19.0.9/19.1.10/19.2.9/19.3.1です。Next.jsは11月3日にMedium 7件の定例セキュリティリリースを予告しているので、出たらその版へ上げ直します。設定でRSCを止める回避策はありません。日本時間2025年12月5日午前6時の時点で未修正のまま公開していたアプリは、更新と再デプロイ後にシークレットをすべて再発行してください。
React2Shellの仕組みとCVSS 10.0の内訳
研究者のLachlan Davidson氏が2025年11月29日にMetaのバグ報奨金制度へ報告し、12月3日にnpmへの修正版公開と同時に公表されました。React公式ブログの時系列では、報告から公表まで4日です。「React2Shell」は、発見者が解説サイトで使っている呼び名です。
CVE-2025-66478の取り下げとCVSSベクトルの読み方
公表時、Next.js側には別にCVE-2025-66478が割り当てられました。原因がReact側と同一だったため、NVDでは「CVE-2025-55182の重複」としてRejected(取り下げ)になっています。スキャナーやレポートに両方の番号が出ても、追跡するのはCVE-2025-55182の1つで足ります。
NVDの登録情報では、CNAのMetaが付けたCVSS 3.1基本値が10.0で、ベクトルは AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H です。ネットワーク越しに、特別な条件なく、認証も利用者の操作も要らずに成立し、影響がアプリの外まで及びます。弱点の分類はCWE-502(信頼できないデータのデシリアライズ)です。スコアの算出方法はCVSSv3のスコアの目安と計算式で解説しています。
Server Functionを書いていないアプリも対象になる理由
RSCでは、ブラウザからサーバー上の関数(Server Function、Next.jsではServer Actions)を呼ぶとき、引数をReact独自の形式(Flight)に変換して送ります。攻撃者はこの受け口に細工したリクエストを送り、サーバー側のReactが復元する過程でコード実行に至ります。Flightのデータ形式はRSCペイロードの中身の読み方と取得手順で確認できます。
React公式は「Server Functionを実装していなくても、RSCに対応したアプリは脆弱になりうる」と明記しています。Wizの分析も、create-next-app で作って本番ビルドしただけのアプリをコードを変えずに攻撃できたと報告しました。Server Actionsを書いていないことは対象外の根拠になりません。なお発見者のサイトは、公表直後に出回った「PoC」の多くが、開発者が危険な関数をわざわざ公開している前提の偽物だったと注意しています。偽PoCで再現しなかったことを安全の根拠にしてはいけません。
React2Shellの影響版と対象外になる構成
影響の有無は、RSCの実装を含むパッケージの版で決まります。系列ごとの境界は次のとおりです。Next.jsの値はNext.js公式のセキュリティ告知、RSCパッケージの値はGitHub Advisory(GHSA-fv66-9v8q-g76r)に基づきます。
RSCパッケージとNext.jsの影響版と最初の修正版
| 対象 | 影響を受ける版 | 最初の修正版 |
|---|---|---|
| react-server-dom-* | 19.0.0 | 19.0.1 |
| react-server-dom-* | 19.1.0/19.1.1 | 19.1.2 |
| react-server-dom-* | 19.2.0 | 19.2.1 |
| Next.js 15.0系 | 15.0.0〜15.0.4 | 15.0.5 |
| Next.js 15.1系 | 15.1.0〜15.1.8 | 15.1.9 |
| Next.js 15.2系 | 15.2.0〜15.2.5 | 15.2.6 |
| Next.js 15.3系 | 15.3.0〜15.3.5 | 15.3.6 |
| Next.js 15.4系 | 15.4.0〜15.4.7 | 15.4.8 |
| Next.js 15.5系 | 15.5.0〜15.5.6 | 15.5.7 |
| Next.js 16.0系 | 16.0.0〜16.0.6 | 16.0.7 |
| Next.js 14系カナリア | 14.3.0-canary.77以降 | 14系安定版へ戻す |
react-server-dom-*は、webpack・parcel・turbopackの3パッケージを指します。React公式が影響を受けると挙げたフレームワークは、next、react-router、waku、@parcel/rsc、@vitejs/plugin-rsc、rwsdkの6つです。表は「最初の修正版」で、後続の脆弱性まで直った版は次の章で示します。
Pages Router・Edge Runtime・13〜14系安定版・React Nativeの扱い
Next.js公式は、13.x、14.x安定版、Pages Routerのアプリ、Edge RuntimeをReact2Shellの対象外としています。ただし対象外なのはリモートコード実行の1件だけです。2025年12月11日の後続のDoS(CVE-2025-55184とCVE-2025-67779)はNext.js 13.3〜14.2.34も対象で、14系の最終版14.2.35で直りました。2026年10月14日に修正されたSVG画像変換のリモートコード実行は10.0.0以上が対象なので、Pages Routerでも13〜14系でも、glibc系のLinuxで画像の変換処理を動かしていれば該当します。App RouterとPages Routerの違いはApp Routerのファイル規約とPages Routerとの違いで確認できます。
React Nativeのアプリは、サーバー側でRSCを動かさない限り対象になりません。React公式の更新手順は、モノレポでWebアプリと同居している場合に react-server-dom-* だけを更新し、react と react-dom の版は動かさないよう案内しています。Expoは個別に、Expoの変更履歴を参照するよう案内されています。
初回修正版で止めると残る後続の脆弱性
露出の規模について、Wizは自社の顧客環境のうち39%に脆弱な版のNext.jsまたはReactがあったと示しました(母数はインスタンスではなく環境)。そのうち初回修正版で止まっているアプリは、以下の後続の脆弱性を抱えたままです。
RSCパッケージの後続アドバイザリ9件の時系列
React側では、Reactリポジトリのセキュリティアドバイザリに、CVE-2025-55182の後に9件が出ています。系列ごとの修正版は、前の行の修正をすべて含みます。
| 公表日 | 番号 | 内容 | 修正版(19.0/19.1/19.2) |
|---|---|---|---|
| 2025-12-11 | CVE-2025-55183 | ソースコード露出 | 19.0.2/19.1.3/19.2.2 |
| 2025-12-11 | CVE-2025-55184 | DoS | 19.0.2/19.1.3/19.2.2 |
| 2025-12-12 | CVE-2025-67779 | DoS(55184の修正漏れ) | 19.0.3/19.1.4/19.2.3 |
| 2026-01-26 | CVE-2026-23864 | DoS | 19.0.4/19.1.5/19.2.4 |
| 2026-04-08 | CVE-2026-23869 | DoS | 19.0.5/19.1.6/19.2.5 |
| 2026-05-06 | CVE-2026-23870 | DoS | 19.0.6/19.1.7/19.2.6 |
| 2026-07-21 | CVE-2026-44907 | Server FunctionsのDoS | 19.0.8/19.1.9/19.2.8 |
| 2026-10-14 | GHSA-xqc2-xf4c-x3h3 | リモートコード実行 | 19.0.9/19.1.10/19.2.9 |
| 2026-10-14 | GHSA-h3gv-c5rc-p453 | Server FunctionsのDoS | 19.0.9/19.1.10/19.2.9 |
公表日は公式リポジトリのアドバイザリ公開日(UTC)に統一し、CVE-2025-67779は2025年12月12日としています。10月14日の2件は19.3.0も対象で、19.3系の修正版は19.3.1です。この2件は10月31日時点でCVE番号がまだ付いていません。
2026年のNext.js本体のリモートコード実行と10月14日の修正3件
Next.js本体にも、2026年に入ってリモートコード実行の修正が続いています。10月14日の告知で出た16.4.1(Active LTS)と15.5.28(Maintenance LTS)が、深刻度Critical・Highの修正を全部含む版です。
| 公表日 | 内容 | 深刻度 | 修正版 |
|---|---|---|---|
| 2026-08-25 | Windows上のサーバーのRCE(CVE-2026-75604) | Critical | 15.5.24/16.3.3 |
| 2026-08-25 | AVIF画像変換のRCE | Critical | 15.5.24/16.3.3 |
| 2026-09-22 | next/og ImageResponseのRCE | Critical | 16.3.6 |
| 2026-10-14 | use cacheのRCE | Critical | 16.4.1 |
| 2026-10-14 | SVG画像変換のRCE | Critical | 15.5.28/16.4.1 |
| 2026-10-14 | Server ActionsのDoS | High | 15.5.28/16.4.1 |
use cacheの件(GHSA-673q-mjm6-r5xr)は、Cache Componentsを使うApp Routerで use cache の関数が複数の型付き配列を返すと成立し、16.0.0〜16.4.0が対象です。公式は回避策が無いとしたうえで、似た関数を書いていなくてもすぐ更新するよう求めています。SVG変換の件(CVE-2026-96889)はImage Optimization APIが使う上流ライブラリの欠陥で、glibc系Linuxが条件です。Server ActionsのDoS(CVE-2026-94482)は、Server Actionsを1つ以上持つApp Routerが対象で、Pages Routerだけのアプリは非該当です。use cache の使いどころはNext.jsのキャッシュとuse cache・revalidateTagの使い分けで扱っていますが、この件では書き方の見直しより更新が先です。
9月30日の定例リリースで出た16.3.8は10月14日の3件、15.5.27はSVG画像変換のRCEとServer ActionsのDoSの影響版に含まれます。実際の影響は各件の構成条件によります。16.4.2(10月15日)と16.4.3(10月23日)はバグ修正のみです。11月3日の定例リリースの予告では、深刻度Mediumの7件が修正される予定で、影響版は公開時に示されます。
自分の環境が対象か確かめるnextの版確認とlockfile判定
npm利用時の判定材料は、本番ビルドに使った package-lock.json です。手元のlockfileが本番と一致することを確認し、稼働中の成果物やコンテナの版も照合します。package.json の ^15.5.0 のような範囲指定では、どの版が入っているかは分かりません。
npm lsにreact-server-domが出ないNext.jsの同梱構造
Next.jsはRSCの実装を next/dist/compiled/react-server-dom-webpack に同梱しています(配布物のpackage.jsonでのパッケージ名は react-server-dom-webpack-builtin)。同梱分はnpmの依存ツリーに現れないため、次の2つ目のコマンドでは検出できません。別途依存するRSCパッケージがあれば、その分は表示されます。
# Next.js の版を確認する(Next.js の判定はこれで行う)
npm ls next
# Next.js 以外の RSC 対応フレームワーク向け
# (Next.js は RSC を同梱しているため、ここに何も出なくても「影響なし」とは言えない)
npm ls react-server-dom-webpack react-server-dom-turbopack react-server-dom-parcel
2つ目はReact Router、Waku、Vite、ParcelなどRSCパッケージを直接の依存に持つ構成で使います。WakuはRSCを前提にした軽量フレームワークで、Wakuの導入とNext.jsとの違いで紹介しています。RSCの仕組みそのものはReact Server Components(RSC)とはで解説しています。
package-lock.jsonから系列ごとに判定するNode.jsスクリプト
複数のリポジトリを点検するときは、lockfileを読んで判定するスクリプトが手早く使えます。プロジェクト直下に保存して node check-react2shell.mjs で実行します。外部パッケージは不要で、Node.js 18以降で動きます。
// package-lock.json から next・react-server-dom-*・sharp の版を読み、React2Shell と後続CVEの修正有無を判定する
import { readFileSync } from "node:fs";
const lock = JSON.parse(readFileSync(process.argv[2] ?? "package-lock.json", "utf8"));
// CVE-2025-55182 の最初の修正版(系列ごと)
const fixed = {
next: { "15.0": "15.0.5", "15.1": "15.1.9", "15.2": "15.2.6", "15.3": "15.3.6",
"15.4": "15.4.8", "15.5": "15.5.7", "16.0": "16.0.7" },
rsc: { "19.0": "19.0.1", "19.1": "19.1.2", "19.2": "19.2.1" },
};
// 2026-10-31 時点で後続CVE(10月14日の修正まで)が直っている版(系列ごと)
const current = {
next: { "15.5": "15.5.28", "16.4": "16.4.1" },
rsc: { "19.0": "19.0.9", "19.1": "19.1.10", "19.2": "19.2.9", "19.3": "19.3.1" },
};
const num = (v) => v.split("-")[0].split(".").map(Number);
const lt = (a, b) => { const x = num(a), y = num(b);
for (let i = 0; i < 3; i++) if (x[i] !== y[i]) return x[i] < y[i]; return false; };
if (![2, 3].includes(lock.lockfileVersion) || !lock.packages) {
throw new Error("判定できません:packages を持つ lockfileVersion 2 または 3 が必要です");
}
for (const [path, info] of Object.entries(lock.packages)) {
const name = path.split("node_modules/").pop();
const v = info.version;
if (info.link || typeof v !== "string") {
if (name === "next" || name === "sharp" || name.startsWith("react-server-dom-")) {
console.error(`${path} リンク依存または版情報なし:実体の版を個別確認`);
process.exitCode = 1;
}
continue;
}
if (v.includes("-") && (name === "next" || name === "sharp" || name.startsWith("react-server-dom-"))) {
console.log(`${path} ${v} プレリリース版:公式アドバイザリで個別確認`);
continue;
}
if (name === "sharp") { console.log(`${path} ${v} ${lt(v, "0.35.5") ? "SVG変換のRCEが未修正(0.35.5以上が必須)" : "SVG変換のRCEは修正済み"}`); continue; }
if (name !== "next" && !name.startsWith("react-server-dom-")) continue;
const line = num(v).slice(0, 2).join(".");
const kind = name === "next" ? "next" : "rsc";
const f = fixed[kind][line];
const r1 = f && lt(v, f) ? `React2Shell未修正(${f}以上が必須)` : "React2Shellは対象外か修正済み";
const c = current[kind][line];
const r2 = c && !lt(v, c) ? "後続CVEも修正済み" : `後続CVEが未修正(推奨: ${kind === "next" ? "16.4.1以上 か 15.5.28" : "19.0.9/19.1.10/19.2.9/19.3.1"})`;
console.log(`${path} ${v} ${r1}/${r2}`);
}
[email protected]は「React2Shell未修正(15.5.7以上が必須)」、[email protected]・16.3.8・15.5.27は「React2Shellは対象外か修正済み/後続CVEが未修正」、[email protected]・16.4.3・15.5.28は「後続CVEも修正済み」と出ます。sharpは0.34系なら未修正、0.35.5なら修正済みです。11月3日の定例リリースや16.5系が出たら current の値を書き換えてください。packages を持たない古いlockfileVersion 1は判定できないとしてエラーで止まり、pnpm・Yarnのlockfileは形式が違うため読めません。
npm auditとDependabotで後続CVEまで拾うときの読み方
npm audit はGitHub Advisory Databaseと照合するため、後続CVEも一覧に出ます。ただし10月14日の3件がAdvisory Databaseに登録されたのは10月22日で、告知から8日間は npm audit もDependabotも拾いませんでした。表示される npm audit fix --force はメジャー版の移行を伴うことがあり、そのまま実行すると破壊的変更を取り込みます。リポジトリ単位の通知はDependabotのdependabot.ymlの書き方とRenovateとの違いを参考に設定し、Next.js公式ブログのセキュリティ告知も併せて追ってください。
修正版へのアップデート手順とNext.js以外の対応
Next.js本体の更新で同梱のRSC実装と依存するsharpを更新できます。その後、動作確認と本番ビルドを行い、全稼働インスタンスへ再デプロイして、修正版で稼働していることを確認します。react と react-dom はReact2Shellの対象ではないため、版をそろえる目的以外で同時に上げる必要はありません。
Next.jsを16.4.1以上か15.5.28へ上げるコマンド
# 16系へ上げる(2026-10-31 時点の latest は 16.4.3)
npm install [email protected]
# 15系に留まる場合(npm の backport タグ。15.0〜15.4 系列からもここへ移る)
npm install [email protected]
# 13.3〜14.x に留まる場合の最終版(2026年の修正は含まれない)
npm install [email protected]
# 更新後に lockfile を判定し直す
node check-react2shell.mjs
npm ls sharp
npm audit --omit=dev
15.0〜15.4系列の最終版(15.4.11など)では2026年8月以降のリモートコード実行が直らないため、15.5.28へ移るのが最小の変更です。16.0〜16.3系列も16.4系へ移ります。15系のMaintenance LTSは当初2026年10月21日までの予定でしたが、Next.jsのサポートポリシーは延長を明記し、15系のセキュリティリリースを2027年1月31日まで出すとしています。それまでに16系への移行を済ませる計画を立ててください。版ごとの変更点とLTS期限はNext.js 16のリリース履歴・LTS期限・セキュリティ修正版にまとめています。公式の対話式ツール fix-react2shell-next は2025年12月時点の推奨版へ上げるものなので、実行後に上記の版まで上げ直します。
14系に留まるアプリでsharpだけを0.35.5へ上げる暫定手順
14系はサポートポリシー上すでにサポート外で、SVG変換の件の修正版は出ていません。14.2.35から上げられないアプリは、公式の回避策「Next.jsが使うsharpを0.35.5以上にする」をnpmの overrides で当てます。
{
"dependencies": {
"next": "14.2.35"
},
"overrides": {
"sharp": "^0.35.5"
}
}
npm install の後、npm ls sharp が0.35.5以上を示すことを確かめます。何も表示されない構成では、overrides だけではsharpが入りません。glibcかどうかは実行環境で決まり、DebianやUbuntu系のイメージは該当、Alpine系(musl)は条件から外れます(確認は ldd --version)。基盤イメージの選び方はNext.jsをDockerで動かすCompose構成とstandalone最適化で比較しています。これは延命の手段で、Server ActionsのDoSやRSCの後続CVEは残ります。
React Router・Waku・Vite・Parcel・rwsdkのRSC依存更新
Next.js以外では、フレームワークの公式更新手順とpeerDependenciesに従って関連パッケージも更新します。直接・間接依存にあるreact-server-dom-webpack などを19.0.9・19.1.10・19.2.9・19.3.1のいずれかへ上げます。RedwoodSDKは rwsdk 1.0.0-alpha.0以上が前提です。モノレポでは別のパッケージが古いRSCパッケージを抱えていることがあるので、ルートで npm ls react-server-dom-webpack を一度は確認してください。
WAFやホスティング側の緩和を当てにできない理由
Next.js公式は「回避策は無く、修正版への更新が必要」としています。脆弱な処理はRSCのリクエスト復元そのもので、App RouterからRSCを外す設定がないためです。React公式も、ホスティング事業者と一時的な緩和を入れたと認めたうえで「これに頼らず、すぐに更新すること」と書いています。WAFのルールは既知の攻撃文字列に合わせたもので、変形した攻撃をすり抜ける余地が残ります。更新までの時間稼ぎとして扱い、それも無理なら公開を一時停止するか、アクセス元を社内に限ってください。WAFの限界はWAFの仕組みとIPS・IDSとの違いにまとめています。
公開していたサーバーの事後対応とシークレット再発行
更新は「これ以上侵入されない」ための処置で、すでに侵入されていた場合の後始末は別に要ります。
公表当日からの悪用とPoC公開・CISA KEVの期限
AWSの脅威インテリジェンスチームは、公表から数時間以内にEarth LamiaやJackpot Pandaを含む中国系グループの悪用の試みを観測したと報告しています。発見者のサイトによると、実際に動く公開PoCは公表から約30時間後に出回り始めました。米CISAは2025年12月5日に既知の悪用された脆弱性(KEV)カタログへ追加し、米連邦政府機関への対応期限を12月12日としました。ランサムウェアでの利用も「Known」とされています。KEVの期限は米連邦政府機関向けで、民間企業に法的義務を課すものではありません。PoCが出回ることの意味はexploitの仕組みと防御で解説しています。
2025年12月4日時点で未修正だったアプリのシークレット全件再発行
Next.js公式は、2025年12月4日13時(米太平洋時間)の時点で未修正のまま公開していたアプリについて、更新と再デプロイの後にアプリが使うシークレットをすべてローテーションするよう求めています。順番はデータベースの接続情報、クラウドのアクセスキー、決済や外部APIのキー、セッション署名鍵が先です。環境変数に置いた鍵は、コード実行を許した時点で読み取られたと考えます。10月14日の2件のリモートコード実行については、公式の告知に悪用の報告は載っていません。ただし16.4.1か15.5.28へ上げるまでの公開期間が長かったアプリは、同じ考え方で鍵の再発行を検討してください。
侵害痕跡の点検で見る常駐プロセス・外部通信・新規ファイル
Unit 42の分析は、侵入後に資格情報やDNS設定を洗い出すコマンド、暗号資産マイナーのXMRig、SNOWLIGHTやVShellといったトロイの木馬、2025年12月12日の更新で公表した新種のLinuxバックドアKSwapDoorを確認しています。点検では、Node.jsプロセスを親に持つ見覚えのないプロセス、サーバーから外部への新しい通信先、アプリのディレクトリや /tmp に増えたファイル、cronやsystemdの追加を見ます。攻撃はServer Functionの受け口に向けた細工リクエストなので、特定のURLパスだけをログで探すと見落とします。痕跡が見つかったら、サーバーを作り直したうえで鍵を替える方が確実です。
対応の優先順位を決める公開範囲とApp Router利用の判断基準
台数が多いときは、次の順で進めると取りこぼしが減ります。
- インターネットに公開しているApp RouterのNext.js(15.0〜16.4.0)を、調査より先に16.4.1以上か15.5.28へ上げる
- 2025年12月4日時点で未修正だったアプリのシークレットを再発行する
- glibc系Linuxで画像の変換処理を動かす13〜14系とPages Routerのアプリで、sharpを0.35.5以上にする
- React Router・Waku・Vite・ParcelなどのRSCパッケージを19.0.9/19.1.10/19.2.9/19.3.1へ上げる
- 11月3日に公開される影響範囲と更新手順を確認し、対象のNext.jsアプリを各系列の修正版へ更新する
- 13.3〜14.x安定版のアプリを、15系のセキュリティリリースが終わる2027年1月31日より前に16系へ移す
公開中のApp Routerのアプリは、影響調査を待たずに更新して構いません。調査に1日かける間に侵入されれば、被害は取り返せないからです。逆に、社内ネットワークに閉じたPages Routerのアプリまで同じ緊急度で夜間作業にするのは過剰です。ただし公開していてglibc系Linuxで画像の変換処理を使うなら、Pages Routerでもsharpの更新だけは同じ日に済ませます。更新後に同じ種類の欠陥や設定の漏れが残っていないかを第三者の目で確かめたい場合は、一創の脆弱性診断・セキュリティ診断で、公開中のWebアプリと依存ライブラリの点検を支援しています。
よくある質問
React2ShellとCVE-2025-55182、CVE-2025-66478は同じものですか?
同じ脆弱性です。React2Shellは発見者が付けた呼び名で、正式な番号はCVE-2025-55182です。Next.js側に割り当てられたCVE-2025-66478は、NVDで「CVE-2025-55182の重複」として取り下げられました。
react2shellの対応は具体的に何をすればいいですか?
npm ls next で版を確かめ、影響版の表の系列ごとの範囲(例:15.5系なら15.5.0〜15.5.6、16.0系なら16.0.0〜16.0.6)か14.3.0-canary.77以降のカナリア版ならReact2Shellの対象です。初回修正版に上がっていても後続の脆弱性が残るため、更新先は2026年10月31日時点で16.4.1以上か15.5.28です。Next.js以外でRSCを使う構成は、react-server-dom-*を19.0.9・19.1.10・19.2.9・19.3.1のいずれかへ上げます。2025年12月4日時点で未修正のまま公開していたアプリは、更新後にシークレットを再発行します。
15.5.7や16.0.7、9月末の16.3.8に上げてあれば十分ですか?
React2Shell自体は解消していますが、十分ではありません。RSCには9件の後続アドバイザリが出ており、Next.js本体にも2026年8月から10月にリモートコード実行が5件公表されました。16.3.8と15.5.27も10月14日の修正の対象範囲に入っています。15系なら15.5.28、16系なら16.4.1以上まで上げてください。
npm lsでreact-server-dom-webpackが出なければ影響なしですか?
Next.jsを使っている場合は、この結果では判断できません。Next.jsはRSCの実装を本体に同梱しており、依存ツリーには現れないからです。判定は next の版で行います。React RouterやWakuなどでRSCを使う構成では、このコマンドの結果が判定材料になります。
アップデートできない場合、暫定的な回避策はありますか?
React2Shellとuse cacheの件は、設定でRSCを止める回避策がありません。WAFやホスティング事業者の遮断ルールで攻撃の一部は防げますが、React公式も「これに頼らず更新すること」と書いています。例外はSVG画像変換の件で、sharpを0.35.5以上にすれば塞げます。それ以外は、更新までの間は公開を止めるか、アクセス元を社内に限るなど到達経路を断つ方が確実です。