2026年10月14日(米国の日付。日本時間では10月15日)に、React と Next.js の脆弱性の告知が5件出ました。脆弱性とは、悪用されると困ることが起きうる、ソフトウェアの弱点のことです。5件のうち3件は、ログインなしで外からコードを実行されうる「Critical(重大)」と書かれています。
先に答えを書きます。Next.js のアプリは、next の版を見ます。15 系(15.5.27 以下)は 15.5.28、16 系(16.4.0 以下)は 16.4.1 に上げます。Next.js の告知のコマンドは、"for 15.5" "for 16.4" と書いています。Next.js を使わずに React の Server Components(サーバー側で動かす React の部品の仕組み)に対応した道具を使っているアプリは、react-server-dom-webpack・react-server-dom-parcel・react-server-dom-turbopack の版を見ます。React のコードがサーバーを使わないアプリは、当たりません。
この記事は、今ある React や Next.js のアプリが当たるかを急いで知りたい人に向けて、「当たるかの見分け → 上げる版 → 確かめ方」の順に書きました。版や日付は2026年10月19日時点のものです。コマンドの出力例は、macOS 14.4.1(arm64)・Node.js 21.7.1・npm 10.5.0 の手元で取ったものです。脆弱性を突く操作や、サーバーの起動はしていません。
- 10月14日に出た5件は何か(React が2件、Next.js が3件。重大度は告知の言い方のまま)
- 自分のアプリが当たるかの見分け方(Next.js は
nextの版、React 単体はreact-server-dom-*の版。サーバーを使わない React は当たらない) - 上げる版(Next.js は 15 系が 15.5.28、16 系が 16.4.1。React の
react-server-dom-*は 19.0.9・19.1.10・19.2.9・19.3.1) npm lsとnpx next --versionでの確かめ方と、npm auditに頼れない理由- 15.5 系で画像の件(sharp)が上げても残る場合と、14 系以前について書けること
10月14日に出た5件は何ですか?
Next.js の公式ブログ「Next.js Security Update for Upstream Vulnerabilities」(2026年10月14日)が、直した版として 16.4.1(Active LTS)と 15.5.28(Maintenance LTS)を挙げています。LTS とは、長い期間サポートされる版のことです。「Upstream(上流)」とは、Next.js が中で使っている部品のことで、10月8日の予告では、上流の脆弱性3件(Critical 2・High 1)を直すと書かれていました。そのうち2件は、9月のセキュリティ更新から延びたものです。
表に出てくる RCE(リモートコード実行)は、外から送った細工したデータで、相手のサーバーに好きなプログラムを動かされることです。DoS(サービス停止)は、サーバーを重くしたり止めたりして、使えなくすることです。
React の側の告知は、GitHub の React のリポジトリに2件あります。Next.js の2件は、React の2件を「上流の告知(Related upstream advisory)」として持っています。
| 件 | 告知の ID | 重大度(告知の欄) | 何が起きるか | 対象のパッケージ |
|---|---|---|---|---|
| React: Server Components の RCE | GHSA-xqc2-xf4c-x3h3 | critical | 細工したデータで、リモートからコードを実行されうる。ごくまれな場合だけ | react-server-dom-webpack・react-server-dom-parcel・react-server-dom-turbopack |
| React: server function の DoS | GHSA-h3gv-c5rc-p453 | high | server function(ブラウザーからサーバー側の関数を呼ぶ仕組み)の受け口に、細工した HTTP リクエストを送ると、メモリ不足や CPU の使いすぎが起きうる | 同じ3つ |
Next.js: use cache の RCE | GHSA-673q-mjm6-r5xr | critical | use cache の関数が複数の typed array(数値の並びを入れる JavaScript のデータ形式)を返すと、ログインなしでコードを実行されうる | next |
| Next.js: 画像の最適化(SVG)の RCE | GHSA-2464-fhr4-w9xw(CVE-2026-96889) | critical | glibc(多くの Linux が使っている基本の部品)を使う Linux で動かしているとき、リモートからコードを実行されうる | next |
| Next.js: Server Actions(server function の Next.js での呼び名)の DoS | GHSA-p3m5-59mp-jv5r | high | 細工したリクエストで CPU を使いすぎ、同じプロセスのほかのリクエストが処理されなくなる | next |
CVE 番号が付いているのは、画像の件の CVE-2026-96889 だけです。ほかの4件の欄に CVE 番号はありません(2026年10月19日時点)。
重大度の言い方は、告知ごとに違う件があります。画像の件は、「画像の件(sharp)は、上げるだけで直りますか?」の節の最後で書きます。
出典: Next.js: Security Update for Upstream Vulnerabilities・Next.js: 予告(2026年10月8日)・各告知(上の表のリンク)
自分のアプリは当たる?見分け方
見る所は、アプリの作り方で変わります。先に早見表を置きます。
| アプリの作り方 | 見る所 | 当たるか |
|---|---|---|
| React のコードがサーバーを使わない | ── | 当たらない(React の告知の原文) |
| Vite のふつうの React のひな形 | npm ls で react-server-dom-* が出ないこと | 当たらない(ひな形の依存に無い) |
| create-vite で「RSC」を選んだ | react-server-dom-webpack の版 | 当たりうる側 |
| Next.js | next の版 | 15.5.27 以下・16.4.0 以下なら上げる(件ごとの条件は下) |
Next.js を使わず、react-server-dom-* を使う | react-server-dom-* の版 | 範囲の版なら対象 |
サーバーを使わない React は、当たらない
React の2件の告知(RCE と DoS)には、同じ2文があります。
- アプリの React のコードがサーバーを使わないなら、この脆弱性の影響は受けません
- Server Components に対応したフレームワーク・バンドラー・バンドラーのプラグインを使っていないなら、この脆弱性の影響は受けません
原文は次のとおりです。
If your app’s React code does not use a server, your app is not affected by this vulnerability. If your app does not use a framework, bundler, or bundler plugin that supports React Server Components, your app is not affected by this vulnerability.
出典: GHSA-xqc2-xf4c-x3h3・GHSA-h3gv-c5rc-p453
Vite のふつうのひな形は当たらない。ただし「RSC」を選んだ場合を除く
npm create vite で作る React のひな形(create-vite 9.3.0 の template-react と template-react-ts)の依存は、react と react-dom だけで、react-server-dom-* は入っていません。React 用のプラグイン @vitejs/plugin-react(6.1.2)の依存も、@rolldown/pluginutils だけです。手元で --template react で作って npm ls しても、react-server-dom-* は0件でした(あとの「版の確かめ方は?」に出力を載せます)。Vite の始め方は、Vite と React の始め方の記事で説明しています。
ただし、create-vite には「RSC」という選び方もあります。選ぶと、@vitejs/plugin-rsc の例を取ってきます。@vitejs/plugin-rsc(0.5.38)は、react-server-dom-webpack を peer dependency(使う側が入れておく前提の依存)に求めます。つまり、上の原文の「Server Components に対応したバンドラーのプラグイン」の側です。「Vite で作った React は当たらない」と書けるのは、RSC を選んでいない、ふつうのひな形だけです。
出典: create-vite 9.3.0 のパッケージ・npm: @vitejs/plugin-react・npm: @vitejs/plugin-rsc
Next.js のアプリは、next の版で見る
Next.js のアプリは、react-server-dom-webpack や react-server-dom-turbopack を、next の中に自前で持っています。そのため、手元の Next.js 16.4.0 のアプリで npm ls react-server-dom-webpack を流すと、(empty)(空)と出て、終了コードは 1 でした。空だからといって安全という意味ではありません。見る所は next の版です。
もう1つ、気をつけることがあります。手元で create-next-app を使って作ると、16.4.0 でも 16.4.1 でも、react は 19.3.0 で入りました(19.3.1 ではありません)。Next.js のアプリで npm ls に react@19.3.0 と出ても、react そのものは React の告知の対象のパッケージに入っていません。「react を 19.3.1 に上げる」を、Next.js のアプリの手順として書いた公式の文は、確かめられませんでした。
next の版が範囲に入っていても、件ごとに条件が違います。
| 件 | 告知に書かれた条件 |
|---|---|
| Server Actions の DoS | Pages Router のアプリ、または Server Actions を使っていないアプリは当たらない("Applications using Pages Router or not using Server Actions are not vulnerable.") |
use cache の RCE | App Router で Cache Components を使うアプリの話。ただし告知は「似た関数が無くても、すぐ上げる」と書き、回避策は無い("There is no known workaround for affected applications.") |
| 画像の最適化(SVG)の RCE | 書かれている条件は、glibc を使う Linux で動くとき("when Next.js runs on glibc-based Linux") |
use cache の件と画像の件の条件の、もう少しくわしい話は、「上げる版は?」のあとの節に書きます。
出典: Next.js: Security Update for Upstream Vulnerabilities・GHSA-673q-mjm6-r5xr・GHSA-2464-fhr4-w9xw・GHSA-p3m5-59mp-jv5r
上げる版は?
Next.js は、15 系(15.5.27 以下)は 15.5.28、16 系(16.4.0 以下)は 16.4.1
Next.js の告知が書いているコマンドは、次の2行です。
npm install next@15.5.28 # for 15.5
npm install next@16.4.1 # for 16.4
3件それぞれの、当たる版と直った版は次のとおりです(告知の右側にある「Affected versions」と「Patched versions」の欄の写しです)。
| 件 | 当たる版(欄) | 直った版 |
|---|---|---|
use cache の RCE | >=16.0.0 <= 16.4.0(行はこの1つだけ) | 16.4.1 |
| 画像の最適化(SVG)の RCE | >= 10.0.0 <= 15.5.27 と > 16.0.0 <= 16.4.0 | 15.5.28 と 16.4.1 |
| Server Actions の DoS | >=13.0.0 <= 15.5.27 と >= 16.0.0 <= 16.4.0 | 15.5.28 と 16.4.1 |
欄の上では、15.0〜15.4 も直った版は 15.5.28、16.0〜16.3 も 16.4.1 です。
読むときの注意が3つあります。
use cacheの件の欄に、15 系の行はありません。ただし「15 系は当たらない」と書いた文も、見つかりませんでした- 画像の件の 16 系は、
> 16.0.0と、>で書かれています。書いてあるまま読むと、16.0.0 そのものだけは範囲から外れます。意図かどうかは分かりません。「16 系は 16.4.1 に上げる」と覚えれば、欄とずれません - 2026年10月19日時点の
latestは 16.4.2 です(2026年10月15日に公開。米国の日付で、日本時間では16日)。告知のコマンドは 16.4.1 のままです。16.4.2 のリリースノートに security という語はなく、Turbopack や文書の直しが書かれています。16.4.2 に 16.4.1 の直しが入っていると書いた文は確かめていませんが、欄が当たる範囲としているのは 16.4.0 までです
Node.js の条件は、next の engines(動く Node.js の版の指定)によると、16.4.0 と 16.4.1 が Node.js 20.9.0 以上です。15.5.28 は ^18.18.0 || ^19.8.0 || >= 20.0.0 です。
サポートの方針のページでは、16.x が Active LTS、15.x が Maintenance LTS です。メジャー版は、最初に出てから2年のあいだ Maintenance LTS になります。15.x の公開日は2024年10月21日なので、2年は2026年10月21日になります(これはこの記事での計算で、終わる日をそのまま書いた文は方針のページにありません)。
出典: Next.js: Security Update for Upstream Vulnerabilities・Next.js: Support Policy・Next.js v16.4.1 のリリースノート・Next.js v16.4.2 のリリースノート・npm: next
13 系・14 系は、欄の当たる範囲に入っています。直った版は告知にありません。くわしくは「よくある質問」に書きます。
React は、react-server-dom-* を 19.0.9・19.1.10・19.2.9・19.3.1 に
React の対象のパッケージは react-server-dom-webpack・react-server-dom-parcel・react-server-dom-turbopack の3つです。react と react-dom は、告知の欄にも本文にも、対象のパッケージとして書かれていません。
RCE の告知(GHSA-xqc2-xf4c-x3h3)の、当たる版と直った版は次のとおりです。本文は「19.0.0 through 19.0.8, 19.1.0 through 19.1.9, 19.2.0 through 19.2.8 and 19.3.0」と書き、欄も同じです。
| 系列 | 当たる版 | 直った版 |
|---|---|---|
| 19.0 | 19.0.0〜19.0.8 | 19.0.9 |
| 19.1 | 19.1.0〜19.1.9 | 19.1.10 |
| 19.2 | 19.2.0〜19.2.8 | 19.2.9 |
| 19.3 | 19.3.0 | 19.3.1 |
DoS の告知(GHSA-h3gv-c5rc-p453)は、本文と欄で当たる版の範囲が違います。
- 本文: 19.0.0〜19.0.7・19.1.0〜19.1.8・19.2.0〜19.2.7(19.3.0 は挙げていません)
- 欄: RCE の告知と同じ範囲(19.0.8・19.1.9・19.2.8・19.3.0 も含みます)
直った版は、どちらも同じ 19.0.9・19.1.10・19.2.9・19.3.1 です。どちらの範囲でも、上げる先は変わりません。
細かい点が2つあります。RCE の告知の本文は直った版を「19.0.09」と書いていますが、欄と DoS の告知の本文は「19.0.9」で、npm にあるのも 19.0.9 です。また、react-server-dom-parcel には 19.0 系の版がそもそもありません(最初の 19 系は 19.1.0 です)。
React の告知は、対象のパッケージを使っているなら、直った版のどれかに「すぐ上げる」ように書いています("upgrade to any of the fixed versions immediately")。コマンドは書かれていません。npm では、2026年10月19日時点で、react・react-dom・react-server-dom-* の latest はどれも 19.3.1 で、backport は 19.1.10 です。
出典: GHSA-xqc2-xf4c-x3h3・GHSA-h3gv-c5rc-p453・npm: react・npm: react-server-dom-parcel
条件がはっきりしない件と、ほかの道具は?
use cache の件と画像の件の条件
use cache は、関数の結果をキャッシュ(使い回し)するための指定です。Cache Components は、Next.js の文書によると、next.config.ts で cacheComponents を true にすると有効になります。
手元で create-next-app の 16.4.0 と 16.4.1 を、保存した設定のない状態で --yes を付けて作ると、App Router の形で、next.config.ts に cacheComponents: true が入りました。つまり、既定の形が use cache の件の「App Router で Cache Components を使うアプリ」にあたります。ただし、ひな形の app/ に use cache や use server の語は0件でした。Next.js の告知は「似た関数が無くても上げる」と書いているので、「ひな形に関数が無いから大丈夫」とは読めません。
画像の件は、macOS・Windows・Alpine などの musl という部品を使う Linux が当たらない、という文は告知にも告知の欄にもありません。書かれているのは「glibc を使う Linux で動くとき」という条件だけです。
use cache の件は、React と Next.js で言い方の強さが違います。React の RCE の告知は「ごくまれな場合だけ(応答が複数の typed array と、攻撃者が操れる値を運ぶとき)」と書き、Next.js の告知は「似た関数が無くても上げる」と書いています。どちらの言い方も、ここに並べておきます。「当たらないから上げなくてよい」とは読まないでください。
出典: GHSA-xqc2-xf4c-x3h3・GHSA-673q-mjm6-r5xr・GHSA-2464-fhr4-w9xw・Next.js 文書: cacheComponents
React Router・Waku・Parcel など、ほかの道具を使っているとき
公式の案内は「直った版に上げる」です。React の2件の告知は、対象の3つのパッケージのどれかを使っているなら、直った版のどれかに「すぐ上げる」ように書いています。コマンドは書かれていません。各フレームワークが出した告知は、この記事では開いていません。まず、次の節の npm ls で、react-server-dom-* の版を見てください。
Next.js 16.4 でこれから作り始める人向けの話は、同じ回に出すNext.js 16.4 の記事で説明します。
版の確かめ方は? npm ls と next --version
Next.js の告知にも React の告知にも、確かめ方(npm ls など)の案内はありません。告知にあるのは、上げるコマンドだけです。この節の出力は、2026年10月19日に手元(macOS 14.4.1・Node.js 21.7.1・npm 10.5.0)で流したものです。コマンドは npm のもので、pnpm・yarn・bun では流していません(3つの違いはこちらの記事で説明しています)。出力の …/ は、置き場のパスを省いた印です。
端末の言語の設定によって、木の線が ├─ や └── の形で出ることがあります(手元でも、設定を変えると変わりました)。見るのは版の数字です。
Next.js のアプリ: next の版を見る
create-next-app 16.4.0 で作ったアプリ(当たる版)で流します。
$ npx next --version
Next.js v16.4.0
$ npm ls next react react-dom react-server-dom-webpack react-server-dom-turbopack sharp
app-1640@0.1.0 …/app-1640
+-- next@16.4.0
| +-- react-dom@19.3.0 deduped
| +-- react@19.3.0 deduped
| +-- sharp@0.35.5
| `-- styled-jsx@5.1.6
| `-- react@19.3.0 deduped
+-- react-dom@19.3.0
| `-- react@19.3.0 deduped
`-- react@19.3.0
見る所は next@16.4.0 の行です。16.4.0 は、画像の件・use cache の件・Server Actions の件の、どの欄の範囲にも入っています。直った版は 16.4.1 なので、この出力のアプリは上げる側です。
react-server-dom-webpack だけを指定して流すと、空になります(終了コードは 1 でした)。
$ npm ls react-server-dom-webpack
app-1640@0.1.0 …/app-1640
`-- (empty)
Next.js は、react-server-dom-webpack と react-server-dom-turbopack を、node_modules/next/dist/compiled/ の中に自前で持っています。npm ls には出ません。しかも、その中の React の版の文字は、16.4.0 でも 16.4.1 でも同じ「19.3.0-canary-278794d7-20261002」でした(中のファイルは違います)。中の版の文字では、当たるか直ったかを見分けられません。next の版で見てください。
Next.js を使わないとき: react-server-dom-* の版を見る
Vite のふつうのひな形(npm create vite@latest の React、手元では create-vite 9.3.0 の --template react)で作って、npm install してから流した結果です。
$ npm ls react react-dom react-server-dom-webpack react-server-dom-turbopack react-server-dom-parcel
vite-app@0.0.0 …/vite-app
+-- react-dom@19.3.1
| `-- react@19.3.1 deduped
`-- react@19.3.1
react-server-dom-* は出ません。--all を付けて、深い所まで見ても空でした(終了コードは 1)。
$ npm ls react-server-dom-webpack --all
vite-app@0.0.0 …/vite-app
`-- (empty)
react-server-dom-webpack を自分で入れているアプリでは、版が出ます。19.3.0 を入れた空のフォルダでは、次のように見えました。
$ npm install react@19.3.0 react-dom@19.3.0 react-server-dom-webpack@19.3.0
$ npm ls react react-dom react-server-dom-webpack
rsdw@1.0.0 …/rsdw
+-- react-dom@19.3.0
| `-- react@19.3.0 deduped
+-- react-server-dom-webpack@19.3.0
| +-- react-dom@19.3.0 deduped
| `-- react@19.3.0 deduped
`-- react@19.3.0
19.3.0 は、RCE の告知の当たる版に入っています。直った版は 19.3.1 です。手元では、3つをそろえて上げました。
$ npm install react@19.3.1 react-dom@19.3.1 react-server-dom-webpack@19.3.1
$ npm ls react react-dom react-server-dom-webpack
rsdw@1.0.0 …/rsdw
+-- react-dom@19.3.1
| `-- react@19.3.1 deduped
+-- react-server-dom-webpack@19.3.1
| +-- react-dom@19.3.1 deduped
| `-- react@19.3.1 deduped
`-- react@19.3.1
npm audit には頼れない
npm audit は、依存の既知の脆弱性を調べるコマンドです。2026年10月19日時点、手元では、この5件を出しませんでした。
- 16.4.0 の Next.js のアプリの
npm auditに、nextは出ませんでした(出たのはeslintまわりなどの5件で、10月14日の告知とは別のものです) react-server-dom-webpack@19.3.0だけを入れたフォルダのnpm auditは、found 0 vulnerabilitiesでした- 5件とも、GitHub の Advisory Database(
npm auditが引く先の、全体の一覧)にまだなく、API は 404 を返しました
つまり、当たっているのに 0 件と出ることがあります。npm audit が 0 件だから安全、とは読まないで、上の npm ls で版を見てください。いつから出るようになるかは、分かりません。
上げたあとの見え方
16.4.0 のアプリを、告知のコマンドで上げた結果です。
$ npm install next@16.4.1
$ npm ls next react react-dom sharp
app-1640@0.1.0 …/app-1640
+-- next@16.4.1
| +-- react-dom@19.3.0 deduped
| +-- react@19.3.0 deduped
| +-- sharp@0.35.5
| `-- styled-jsx@5.1.6
| `-- react@19.3.0 deduped
+-- react-dom@19.3.0
| `-- react@19.3.0 deduped
`-- react@19.3.0
$ grep -n '"next"' package.json
12: "next": "^16.4.1",
next@16.4.1 と出れば、16.4 系の直った版です。react が 19.3.0 のままでも、react は告知の対象のパッケージではありません(「Next.js のアプリは、next の版で見る」に書いたとおりです)。create-next-app 16.4.1 で最初から作ったアプリでは、npx next --version が Next.js v16.4.1 と出ました。
create-next-app が書いた package.json の next は "16.4.0"(ぴったりこの版)でした。npm install next@16.4.1 のあとは "^16.4.1" に書き換わっています。^ は、16.4.1 以上で 17 未満の新しい版を許す書き方です。
出典: 手元で流した結果です。公式の案内ではありません。上げる版の一次資料は、「上げる版は?」の節の出典を見てください。
Next.js を上げるときに TypeScript の版も気になる人は、React・Next.js・Vite で TypeScript 7 は使える?の節を見てください。
画像の件(sharp)は、上げるだけで直りますか?
画像の件(CVE-2026-96889)は、Next.js が画像の最適化に使っている部品の脆弱性です。CVE の記録(Red Hat が登録し、2026年9月23日に公開)によると、元は librsvg(SVG という画像形式を読む部品)の誤りです。入れ子になった XML の取り込み(XInclude)に、同じ名前の宣言が重なっているとき、解放したメモリをあとから使ってしまう(use-after-free)誤りが起き、サービス停止か、任意のコードの実行につながりうる、と書かれています。
Next.js が画像の最適化に使う部品は sharp です。sharp にも、同じ CVE の告知(GHSA-wq5f-xc86-pv6w)があります。sharp の当たる版は sharp < 0.35.5 で、直った版は 0.35.5 以上です。
Next.js の告知が書いている回避策は、次のとおりです。
As a workaround, ensure the version of sharp used by Next.js is 0.35.5 or later. Upgrading Next.js to the patched versions ensures package managers automatically provide a fixed version of sharp to Next.js.
訳すと、「Next.js が使う sharp を 0.35.5 以上にしてください。Next.js を直った版に上げれば、パッケージマネージャーが直った sharp を Next.js に入れます」です。
16.4 系は、上げれば sharp も上がる
next の 16.4.1 は、sharp を ^0.35.5(0.35.5 以上の 0.35 系)で求めます。next の指定の上では、16.4.1 に上げれば sharp は 0.35.5 以上になります。手元の 16.4.0 のアプリは、作った時点で sharp が 0.35.5 でした(sharp 0.35.5 の公開は2026年9月27日、16.4.0 は10月6日)。そのため、16.4.1 に上げる前と後で、sharp の版は変わりませんでした。
15.5 系は、上げても古い sharp が残ることがある
next が sharp に求める範囲は、15.5.27 が ^0.34.3 || ^0.35.4、15.5.28 が ^0.34.3 || ^0.35.5 です。15.5.28 は 0.34 系も許しています。0.34 系は、sharp の告知の範囲(0.35.5 より前)に入ります。
手元で、古い版の next@15.5.23 で作った 15.5 系のアプリ(lockfile に sharp 0.34.5 が入ったもの)に、告知のコマンドを流しました。lockfile(package-lock.json)は、入れた版を記録するファイルです。
$ npm install next@15.5.28
$ npm ls next react react-dom sharp
p155@1.0.0 …/p155
+-- next@15.5.28
| +-- react-dom@19.2.8 deduped
| +-- react@19.2.8 deduped
| +-- sharp@0.34.5
| `-- styled-jsx@5.1.6
| `-- react@19.2.8 deduped
+-- react-dom@19.2.8
| `-- react@19.2.8 deduped
`-- react@19.2.8
next は 15.5.28 になりましたが、sharp は 0.34.5 のままでした。このとき npm audit は、sharp を出しました(sharp の告知が全体の一覧に入っているためです)。
次は、npm update sharp を流した結果です。
$ npm update sharp
$ npm ls sharp
p155@1.0.0 …/p155
`-- next@15.5.28
`-- sharp@0.35.5
sharp は 0.35.5 になり、package.json に sharp の行は増えませんでした。これは手元の npm 10.5.0 での結果で、npm update sharp は公式の案内ではありません。告知は「Next.js を上げれば、パッケージマネージャーが直った sharp を入れる」と書いていて、手元の 15.5 系の動きとは食い違いました。15.5 系を上げたあとは、npm ls sharp で 0.35.5 以上かを見てください。
sharp を自分のコードで直接使っている場合の回避策として、sharp の告知は、SVG を読ませない sharp.block({ operation: ["VipsForeignLoadSvg"] }); を書いています。これが Next.js の中の sharp に効くかは、書かれていません。
画像の件の重大度は、告知によって違います
同じ CVE-2026-96889 でも、見る場所によって重大度が違います。CVSS は、脆弱性の深刻さを点数で表す共通の方式です。
| 見る場所 | 重大度 | 点数 |
|---|---|---|
| Next.js の告知(GHSA-2464-fhr4-w9xw) | Critical | CVSS v4 で 9.5(AV:N) |
| sharp の告知(GHSA-wq5f-xc86-pv6w) | high | CVSS v4 で 8.9(AV:L。攻撃の経路の評価が、Next.js の告知の AV:N と違います) |
| CVE の記録(Red Hat) | HIGH | CVSS 3.1 で 7.8 |
食い違っていて、どれが正しいかをこの記事では決めません。Next.js の件は、Next.js の告知の言い方(Critical)で書いています。sharp の告知は、条件をもう少し細かく書いています。「実行環境の条件がそろうと、glibc を使う Linux で RCE になりうる」という書き方です。
出典: CVE-2026-96889 の記録・sharp の告知 GHSA-wq5f-xc86-pv6w・GHSA-2464-fhr4-w9xw
よくある質問
13 系・14 系を使っています。直りますか?
2026年10月19日時点で、「直らない」とも「直る」とも言い切れる文は見つかりませんでした。分かっていることは次のとおりです。
- 欄の当たる範囲には入っています(画像の件は 10.0.0〜15.5.27、Server Actions の件は 13.0.0〜15.5.27)
- 告知が挙げる直った版は、16.4.1 と 15.5.28 だけです。14 系の修正版は告知にありません
- サポートの方針のページで、14.x と 13.x は「Unsupported Versions(サポートの外)」の表にあります。ただし同じページに「まれに、深刻さによっては、LTS の方針の外の版も直す」とも書かれています
- 14 系の最後の版は 14.2.35(2025年12月11日)で、10月14日のあとに 14 系の版は出ていません
- 13 系・14 系を使う人がどうすればよいかの公式の案内は、告知にも GHSA にもありません。14 系は sharp を依存に持たないので、14 系で sharp を自分で入れている場合に、sharp の回避策が効くかは確かめていません
方針のページは、できるかぎり最新の版を使い、本番のアプリは最新の Active LTS か Maintenance LTS で動かすことを勧めています。
npm audit が 0 件なら、当たっていませんか?
いいえ。2026年10月19日時点、手元では npm audit はこの5件を出しませんでした。当たっているのに 0 件と出ることがあります。npm ls で next や react-server-dom-* の版を見てください。
画像の件は、macOS・Windows・Alpine では起きませんか?
告知に書かれている条件は、「glibc を使う Linux で動くとき」だけです。ほかの環境が当たらない、という文はありません。手元は macOS で、Linux(Docker)では流していないので、glibc の Linux での sharp の版の見え方は確かめていません。
Vercel などのホスティングの上で動かしているアプリは、当たりますか?
告知にも GHSA にも書かれていません。この記事では調べていません。
React 18 以前は、当たりますか?
告知が当たる版として挙げているのは、19 系だけです。18 系について書いた文は見つかりませんでした。調べていません。
まとめ
- 2026年10月14日に、React の2件(RCE・DoS)と Next.js の3件(
use cacheの RCE・画像の最適化の RCE・Server Actions の DoS)の告知が出た。5件のうち3件は Critical と書かれている - React のコードがサーバーを使わないなら、当たらない(告知の原文)。Vite のふつうのひな形は、
react-server-dom-*を持たない。create-vite で「RSC」を選んだ場合は、当たりうる側 - Next.js のアプリは
nextの版を見る。npm ls react-server-dom-webpackは、Next.js のアプリでは空になる。reactは告知の対象のパッケージではない - 上げる版は、Next.js が 15 系(15.5.27 以下)は 15.5.28、16 系(16.4.0 以下)は 16.4.1。React は、
react-server-dom-*(reactそのものではない)を 19.0.9・19.1.10・19.2.9・19.3.1 のどれかに。2026年10月19日時点のlatestは、Next.js が 16.4.2、React が 19.3.1 npm auditは、2026年10月19日時点の手元では、この5件を出さなかった。npm auditに頼らず、npm lsとnpx next --versionで版を見る- 15.5 系では、上げても古い sharp が残ることがあった(手元の結果)。
npm ls sharpで 0.35.5 以上かを見る - 13 系・14 系の修正版は、告知にない。14.x はサポートの外。「直らない」と言い切る文は見つかっていない
参考資料
- Next.js: Security Update for Upstream Vulnerabilities(2026年10月14日)
- Next.js: 予告(2026年10月8日)
- Next.js: Support Policy
- GHSA-xqc2-xf4c-x3h3(React: Server Components の RCE)
- GHSA-h3gv-c5rc-p453(React: server function の DoS)
- GHSA-673q-mjm6-r5xr(Next.js:
use cacheの RCE) - GHSA-2464-fhr4-w9xw(Next.js: 画像の最適化の RCE)
- GHSA-p3m5-59mp-jv5r(Next.js: Server Actions の DoS)
- GHSA-wq5f-xc86-pv6w(sharp)
- CVE-2026-96889 の記録
- Next.js v16.4.1 のリリースノート
- Next.js v16.4.2 のリリースノート
- Next.js 文書: cacheComponents
- npm: next
- npm: react
- npm: react-server-dom-parcel
- npm: @vitejs/plugin-rsc
- npm: @vitejs/plugin-react
- create-vite 9.3.0 のパッケージ
※この記事は、公式の資料をもとに AI(Claude)で下書きし、2026年10月19日時点の公式の資料と照らして確かめてから公開しています。誤りに気づいたらお問い合わせからお知らせください。



