Next.jsに7件の修正、キャッシュで他の利用者の内容が返るおそれ

Next.js が
脆弱性の概要
- 対象
- Next.js
- 悪用
- 確認されていない
- 影響
- 別のテナントや利用者向けの内容が返る
- 修正版
- 修正版あり
- 公表元
- Vercel(Next.js)/ GitHub
| 製品 | 対象のバージョン | 修正版 |
|---|---|---|
| Next.js 16系 | 16.0.0〜16.4.4(欠陥ごとに始まりが違う) | 16.4.5 |
| Next.js 15系 | 15.5.28 以前(7件のうち3件) | 15.5.29 |
やること
Next.js は React で Web サイトや Web システムを作るためのフレームワークです。開発元の Vercel は11月3日に 16.4.5 と 15.5.29 を公開し、7件の欠陥を直しました。Next.js で動くシステムがある場合は、次の順で進めてください。
- 16系は 16.4.5、15系は 15.5.29 に上げてください。コマンドは
npm install next@16.4.5かnpm install next@15.5.29です - 15系が対象になるのは7件のうち3件です。残りの4件は、告知で16系だけが対象とされています
- ホスティングのサービスに載せている場合は、そのサービスの案内も読んでください。当てはまる欠陥と、更新のほかにする作業がサービスごとに違います
何が危ないのか
Vercel は10月27日に、11月3日に定期の更新を出すと予告していました。予告では7件とも深刻度は中程度とされていました。11月3日の発表では、このうち1件を深刻度 High としています。一方、GitHub の告知では7件とも Moderate で、CVSS v4 の値は 6.0 から 6.9 です。
7件のうち4件は use cache という書き方で結果を保存して使い回す機能(Cache Components)の欠陥です。キャッシュは一度作った結果を保存しておき、次の要求に返して表示を速くする仕組みです。保存した結果を誰に返してよいかの区別を誤ると、ある利用者やテナント向けの内容が別の人に返ります。
- CVE-2026-119790(CVSS 6.3):発表で High とされた欠陥です。テナントの識別子のような URL の値(ルートパラメーター)を読む
use cacheの関数を、直接とunstable_cache()の中の両方から呼ぶと起きます。プロセスを起動して最初に結果を作っている最中に呼び出しが重なると、別の要求の結果がそのまま保存されます。対象は 16.3.0 以降です - CVE-2026-119351(CVSS 6.3):
use cacheの関数を入れ子にし、内側がルートパラメーターを読んで、遅れて届く値を含む結果を返すと、外側の結果がその値の区別なしに保存されます。告知によると、どの内容が漏れるかを攻撃者は選べません。以前の欠陥(GHSA-h694-7cp9-m8p3)の修正で防げなかった別の形で、対象は 16.2.0 以降です - CVE-2026-119349(CVSS 6.3):
Uint8ArrayやBlobのようなバイナリの値をuse cacheの関数に渡すと、違う値でも同じキャッシュの鍵になることがあります。その値で利用者を区別していると、他人の結果を受け取ったり、自分の結果を他人に返させたりできます - CVE-2026-119350(CVSS 6.3):自社のサーバーで
next startで動かし、Cache Components を有効にして Partial Prefetching を使っていない場合の欠陥です。ログインしていない人の1回の要求で、複数のページが共有する下地(シェル)が汚されます。その結果、配下のすべての URL に 404 を返し続け、再起動しても直らないことがあります。ページの組み方にいくつかの条件が重なったときだけ起き、対象は 16.4.0 以降です
残りの3件は15系も対象です。
- CVE-2026-119348(CVSS 6.3):外から取ってきた応答をそのまま返す作りで、圧縮を解いた本文に、圧縮されていたときの長さなどのヘッダーを付けたまま送ることがあります。1本の接続に複数の要求を続けて流す HTTP/1.1 のリバースプロキシーを手前に置いていると、応答が別の利用者に渡るおそれがあります。自社のサーバーで動かしている場合の欠陥です
- CVE-2026-119346(CVSS 6.0):Edge ランタイムで動く Route Handler や API ルートで、
NextResponse.cookies.set()で Cookie を設定すると、その値が内部用のx-middleware-set-cookieヘッダーにも入ります。このヘッダーは同じサイトの JavaScript から読めるので、HttpOnlyで隠したはずのセッションの Cookie が読まれるおそれがあります。攻撃者がそのサイトで JavaScript を動かせることが前提で、この欠陥だけで JavaScript を動かせるわけではありません - CVE-2026-119347(CVSS 6.9):画像を最適化する
/_next/imageで、許可した取得元にある攻撃者の画像を AVIF と取り違え、dangerouslyAllowSVG: falseで断っているはずの SVG として読み込みます。SVG を読む部品に負荷をかけられたり、その部品の欠陥を突かれたりしやすくなります。この欠陥だけでクロスサイトスクリプティングや遠隔からのコード実行ができると示されたわけではない、と発表は書いています
発表と GitHub の告知に、悪用されたという記載はありません。
対象
告知の対象は、16系が 16.0.0 から 16.4.4 で、欠陥ごとに始まりが違います。15系は 15.5.28 以前で、3件が当てはまります。修正版は 16.4.5 と 15.5.29 だけで、14系以前の修正版は告知にありません。
ホスティングのサービスで動かす場合は、当てはまる欠陥が変わります。Netlify は自社の案内で、7件のうち4件が Netlify 上のサイトに当てはまるとしています。Next.js を上げたうえで、連携の部品 @netlify/plugin-nextjs を 5.16.6 にし、本番や確認用など配備ごとのキャッシュを消すよう勧めています。
回避策
回避策が告知に書かれているのは2件です。
- CVE-2026-119790:
use cacheの関数をunstable_cache()の中で呼ばないようにすれば、完全に防げるとされています - CVE-2026-119350:
next.configでpartialPrefetching: trueを設定するよう勧められています
ほかの5件は、修正版に上げることが唯一の対処とされています。
中小企業が確かめること
委託して作った Web サイトやシステムが Next.js で動いている場合は、使っている Next.js のバージョン、use cache や Cache Components を使っているか、自社のサーバーとホスティングのサービスのどちらで動かしているかを、委託先に聞いてください。
テナントや会員ごとに違う内容を出すシステムでは、更新のあとに保存済みのキャッシュを消すことも相談してください。CVE-2026-119790 の告知では、誤って保存された内容は、作り直されるか消されるまで後の要求に返り続けるとされています。同じ週には、Node.js の通信部品でもキャッシュから別の利用者の応答が返る欠陥が直っています(Node.jsの通信部品undiciに6件の修正、他人の応答が返るおそれ)。
自社で確かめること
- Next.js のバージョンを調べる`npm ls next` で使っているバージョンを調べ、16系は 16.4.5、15系は 15.5.29 より前でないかを確かめてください。
- キャッシュの使い方を聞く`use cache` や Cache Components を使っているか、テナントや会員ごとに違う内容をキャッシュしていないかを開発の担当者に聞いてください。
- 動かしている場所を確かめる自社のサーバーで `next start` で動かしているのか、ホスティングのサービスに載せているのかを確かめ、サービスの案内も読んでください。
出典
- Next.js「November 2026 Security Release」
- Next.js「Upcoming Next.js November Security Release」
- GitHub「Information disclosure across root params in Next.js when a 'use cache' function is called through unstable_cache()」
- GitHub「Cache leak across root param values in nested 'use cache' functions via delayed inner stream metadata」
- GitHub「Cross-user cache disclosure and poisoning in Next.js use cache with binary arguments」
- GitHub「Cache poisoning of shared fallback shells in Cache Components via request-supplied placeholder route params」
- GitHub「Cross-client response injection and disclosure in self-hosted Next.js applications forwarding fetched responses」
- GitHub「HttpOnly cookie exposure through internal response header on Next.js Edge runtime routes」
- GitHub「SVG rejection bypass in Next.js image optimization」
- Netlify「Security Update: Multiple vulnerabilities in Next.js (November 2026)」



コメント 0
まだコメントはありません。