11月3日(米国時間)に、Next.jsの16.4.5と15.5.29が公開されました。10月27日の事前告知どおり、Mediumの脆弱性7件を直すリリースです。Criticalが2件あった10月14日の回と比べると深刻度は下がりますが、7件のうち4件は use cache(Cache Components)、2件はVercel以外のサーバーで動かす構成が条件で、どちらも16系のアプリでは珍しくない使い方です。
この記事では、7件を「使っている機能」と「動かし方」で分け、自社のアプリが該当するかをコードと設定から確かめる手順をまとめます。前回の16.4.1・15.5.28の3件を当てたあと、続けて上げるべきかを判断したい保守担当の方に向けた内容です。
先に、要点をまとめます(2026年11月8日確認)。
- 修正版は 16系が16.4.5、15系が15.5.29 です。16系は7件すべて、15系は3件が対象です。16.3系の修正版は出ていないため、16.3系で動いている場合も16.4.5へ上げます
- 4件は
use cacheを使う16系のアプリが条件です。残りの3件は、Vercel以外の自前サーバーで動かす構成(2件)と、EdgeランタイムでCookieを設定するルート(1件)が条件で、15系も対象に入ります - 11月8日の時点で、7件はGitHub Advisory Databaseに載っておらず、
next@16.4.4でnpm auditを実行しても何も表示されません。公表元のアドバイザリで直接確認します
11月3日に修正された7件は何?
7件ともアドバイザリ上の深刻度はMedium(Moderate)で、認証なしのリモートコード実行は含まれていません。キャッシュの取り違えによる情報の漏えい・汚染が4件、応答が別の利用者に届く問題が1件、Cookieの値の露出が1件、画像最適化の制限の回避が1件です。
Next.js公式の告知と各アドバイザリを、影響する版と修正版で並べると次のとおりです。CVSSはアドバイザリに記載されたv4の値です。
| 番号 | CVSS v4 | 内容 | 影響する版 | 修正版 |
|---|---|---|---|---|
| GHSA-rhh4-g77r-r9qj / CVE-2026-119349 | 6.3 | use cache の関数にバイナリの引数(Uint8Array や Blob)を渡すと、別の値でも同じキャッシュキーになり、他のユーザーのキャッシュが返る | 16.0.0〜16.4.4 | 16.4.5 |
| GHSA-vvgp-ww4w-46vf / CVE-2026-119350 | 6.3 | Cache Componentsで共有するページの外枠(fallback shell)のキャッシュを、1回のリクエストで汚染できる | 16.4.0〜16.4.4 | 16.4.5 |
| GHSA-vc7v-qv4w-wrv8 / CVE-2026-119351 | 6.3 | 入れ子の use cache で、root paramの値ごとのキャッシュが取り違えられる(9月30日に修正されたGHSA-h694-7cp9-m8p3の修正で防げなかった経路) | 16.2.0〜16.4.4 | 16.4.5 |
| GHSA-mfr8-8qww-v76h / CVE-2026-119790 | 6.3 | 同じ use cache の関数を直接と unstable_cache() 経由の両方から呼ぶと、root paramの値をまたいでキャッシュが返る | 16.3.0〜16.4.4 | 16.4.5 |
| GHSA-pc58-hwjq-p385 / CVE-2026-119348 | 6.3 | fetchした応答をそのまま返すセルフホストのアプリで、応答の長さの表記と実際の本文がずれ、他の利用者への応答が混ざる | 15.5.28以下、16.0.0〜16.4.4 | 15.5.29 / 16.4.5 |
| GHSA-7qx7-33qx-rqx2 / CVE-2026-119347 | 6.9 | セルフホストの画像最適化で、SVGを無効にしていても(既定の dangerouslyAllowSVG: false)SVGとして処理される | 15.0.0〜15.5.28、16.0.0〜16.4.4 | 15.5.29 / 16.4.5 |
| GHSA-f3mh-rxg3-f5g2 / CVE-2026-119346 | 6.0 | EdgeランタイムのルートでCookieを設定すると、内部用の x-middleware-set-cookie ヘッダーに値が複製され、HttpOnlyのCookieもJavaScriptから読める | 15.0.0〜15.5.28、16.0.0〜16.4.4 | 15.5.29 / 16.4.5 |
深刻度の表記には1か所ずれがあります。アドバイザリとリリースノートでは7件ともModerate(Medium)ですが、公式ブログの本文ではGHSA-mfr8-8qww-v76hだけが「High Severity」と書かれています(11月8日確認)。root paramでテナント(顧客企業)ごとにデータを分けているアプリでは他社のデータが返り得る、という説明が付いているためと読めます。社内で優先度を付けるときは、この1件を高い方に合わせて扱うと判断がぶれません。
16.4.4から16.4.5までのコミットは、この7件の修正と版番号の更新だけでした(GitHubの比較画面で確認)。機能の変更は入っていないため、16.4.4から上げる場合の確認は修正が入った箇所に絞れます。
自社のアプリは、どれに当てはまる?
「use cache を使っているか」「Vercel以外のサーバーで動かしているか」「EdgeランタイムでCookieを設定しているか」の3つで、確認すべき番号が絞れます。どれにも当てはまらなければ、急ぎの対応は要りません。
use cache を使っている場合(4件・16系のみ)
4件はいずれも、キャッシュした結果が本来とは別の利用者・別の値に返る問題です。攻撃者が任意の内容を差し込めるものではなく、アプリ自身が作った内容が取り違えられます。それでも、顧客ごと・テナントごと・言語ごとにデータを分けてキャッシュしているアプリでは、他の顧客のデータが見える形になり得ます。
- GHSA-rhh4-g77r-r9qj:
use cacheの関数の引数にUint8ArrayやBlobを渡している場合。利用者を区別する値をバイナリで渡していると、別の利用者に結果が返ります - GHSA-vvgp-ww4w-46vf:16.4系で
cacheComponents: trueにし、partialPrefetchingを設定していない(またはfalse)状態で、next startで配信している場合。ルートの形にも条件があり、generateStaticParamsで事前生成する動的ルートにビルド時に生成していない値でアクセスされ、その下に事前生成しない動的な値が2段以上ある構成が対象です。公式の回避策はnext.configでpartialPrefetching: trueにすることです - GHSA-vc7v-qv4w-wrv8:外側の
use cacheの中で別のuse cacheを呼び、内側がnext/root-paramsで値を読んでいる場合。9月30日に同じ型の問題が修正されましたが、その修正では防げない経路が残っていました - GHSA-mfr8-8qww-v76h:同じ
use cacheの関数を、描画中に直接呼ぶ箇所とunstable_cache()の中から呼ぶ箇所の両方がある場合。プロセスの起動直後に処理が重なったときだけ起きます。公式は、unstable_cache()の中から呼ばない形に直せば回避できるとしています
Cache Componentsを有効にしていないアプリや、use cache をまだ使っていないアプリは、この4件の条件に入りません。16.4で推奨になった設定をこれから有効にする予定なら、16.4.5に上げてから進めます。有効にするときの手順はNext.js 16.4の変更点、キャッシュの分け方の考え方はuse cacheの設計にまとめています。
Vercel以外のサーバーで動かしている場合(2件・15系も対象)
公式は、次の2件の条件に「セルフホスト」を挙げています。AWSのECSやGoogle CloudのCloud Runのように、自社で管理するサーバーで next start を動かしている構成です。Vercelで動かしている場合の扱いは告知に書かれていないため、版を上げる前提で考えます。
- GHSA-pc58-hwjq-p385:Route Handlerや
fetchのキャッシュで、外部から取得した応答を加工せずにそのまま返している場合。そのアプリが、HTTP/1.1でリクエストを続けて送る(パイプライン化する)リバースプロキシの後ろにあると、応答が別の利用者に届くことがあります。公式は、すべてのリバースプロキシの構成に当てはまるわけではないとしています。プロキシの設定が分からない場合は、該当するコードがあるかを先に確認します - GHSA-7qx7-33qx-rqx2:
images.remotePatternsで許可した外部の画像を最適化している場合。許可した取得元に攻撃者が画像を置けると、AVIFと誤判定させてSVGの処理まで進めることができます。公式は、この件だけではクロスサイトスクリプティングやリモートコード実行は示されておらず、SVGの解析処理の負荷や不具合にさらされる範囲が広がる問題だと説明しています
GHSA-7qx7-33qx-rqx2で効いてくるのは、remotePatterns で許可している範囲の広さです。社外の人がファイルを置けるストレージ(利用者のアップロード先や、バケット名まで指定していないクラウドストレージのURLなど)を許可している場合は、許可の範囲を自社の保存先だけに絞れるかも見直します。ECSで動かすときの構成全体はAWS ECS×Next.jsの構成で整理しています。
EdgeランタイムでCookieを設定している場合(1件・15系も対象)
GHSA-f3mh-rxg3-f5g2 は、export const runtime = 'edge' を指定したApp RouterのRoute Handler、またはPages RouterのEdge API Routeで、NextResponse の cookies.set() を使ってCookieを設定している場合が対象です。応答に内部用の x-middleware-set-cookie ヘッダーが付き、そこにCookieの値が入ります。Set-Cookie と違い、このヘッダーは同じオリジンのJavaScriptから読めるため、HttpOnlyにしたセッションのCookieでも値が見えます。
悪用するには、同じオリジンで攻撃者のJavaScriptが動いている必要があります。この件だけでJavaScriptを実行させられるわけではありません。公式の再現では、Node.jsランタイムのRoute Handlerと、cookies().set() で設定するルートは影響を受けませんでした。ログインやセッション発行をEdgeランタイムのルートで行っている場合は、優先して上げます。

