Ноябрьский патч Next.js: кэш use cache мог отдавать данные одного клиента другому

3 ноября 2026 года Vercel выпустила Next.js 16.4.5 и 15.5.29 — плановый security-релиз, закрывающий семь уязвимостей. Самые неприятные связаны с директивой use cache: при определённых сценариях кэш отдавал пользователю или арендатору чужие данные. Если проект на Next.js 16.3+ с Cache Components, обновитесь и сбросьте кэш.
Ни одна из семи уязвимостей не даёт выполнить произвольный код, но для SaaS и многоарендных сервисов это не утешение: утечка ответа одного клиента другому — прямой инцидент с персональными данными. В числе затронутых — сайты и личные кабинеты, которые команды собирают в рамках разработки сайтов на React и Next.js, особенно если в одном приложении живут несколько тенантов, регионов или языковых версий.
Ветка 15.5 получила исправления трёх проблем, 16.4 — всех семи. Хостинг-платформы Netlify и Pantheon продублировали предупреждение и подчеркнули: сами они Next.js в проектах клиентов не обновляют, это делает команда приложения. Ниже — что именно сломано, кого касается и что сделать сегодня. Как устроены уровни кэша в веб-приложениях, мы разбирали в материале о кэшировании в веб-разработке.
Что закрыли в Next.js 16.4.5 и 15.5.29
По данным бюллетеня Next.js, четыре из семи проблем касаются кэша Cache Components, ещё три — Edge-маршрутов, проксирования ответов и оптимизации изображений. Vercel оценивает первую как высокую по критичности, остальные — как средние; Netlify в своём уведомлении относит все семь к среднему уровню.
- Утечка между арендаторами через
unstable_cacheиuse cache(GHSA-mfr8-8qww-v76h). Если одна и та же публичная функция сuse cacheчитает root-параметр — например, идентификатор тенанта — и вызывается и напрямую, и изнутриunstable_cache, при холодном заполнении кэша параллельный запрос может получить чужой результат. Дальше он сохраняется и раздаётся до ревалидации. - Вложенные функции
use cache(GHSA-vc7v-qv4w-wrv8). Внешняя запись кэша сохраняется раньше, чем учтены зависимости внутренней функции от root-параметра, — контент одного тенанта, сайта или локали уходит запросам другого. - Бинарные аргументы
use cache(GHSA-rhh4-g77r-r9qj). Разные бинарные значения могли давать одинаковый ключ кэша: пользователь получал чужой результат или подсовывал свой другим. - Отравление общего шелла страницы в self-hosted (
next start) при включённых Cache Components и выключенном Partial Prefetching. Специально собранный URL приводит к неверному серверному рендеру или к «застрявшим» 404 на валидных страницах. - Подмена ответов за HTTP/1.1-прокси (GHSA-pc58-hwjq-p385): если приложение возвращает чужой
Responseбез изменений, распакованное тело уходит со старыми заголовками сжатия, и за прокси с конвейерной обработкой ответы могут достаться не тем клиентам. - Утечка HttpOnly-cookie в Edge-маршрутах (GHSA-f3mh-rxg3-f5g2):
NextResponse.cookies.set()дублировал значение во внутренний заголовокx-middleware-set-cookie, который читается JavaScript той же страницы. - Обход запрета SVG в Image Optimization (GHSA-7qx7-33qx-rqx2): картинка из разрешённого источника маскировалась под AVIF и доходила до SVG-парсера, несмотря на
dangerouslyAllowSVG: false.
Кого это касается в первую очередь
Три «кэшевые» уязвимости требуют Cache Components — механизма, который активно развивается с Next.js 16, а уязвимая комбинация с unstable_cache касается версий 16.3 и новее. Если вы ещё на Pages Router или не включали Cache Components, основной риск ниже, но Edge-cookie, прокси и SVG-обход актуальны и для 15.x.
Сильнее всего задеты многоарендные SaaS, маркетплейсы с личными кабинетами и мультиязычные сайты, где root-параметр ([tenant], [locale], [region]) разделяет данные. Именно там «чужой» кэш превращается из бага вёрстки в утечку. Self-hosted-проекты за nginx или другим HTTP/1.1-прокси стоит проверить отдельно — у них два дополнительных сценария (отравление шелла и подмена ответов).
Что сделать команде сегодня
- Обновить зависимость:
npm install next@16.4.5для ветки 16.x илиnpm install next@15.5.29для 15.x, пересобрать и выкатить. - На Netlify дополнительно обновить адаптер
@netlify/plugin-nextjsдо 5.16.6: по словам платформы, одно обновление Next.js не закрывает сценарий с Middleware. - Сбросить кэш после деплоя. Записи, «отравленные» до патча, продолжат раздаваться до ревалидации или вытеснения — новая версия их не вычистит сама.
- Проверить код: найти функции с
use cache, которые читают root-параметры или принимают бинарные аргументы, и места, где одна функция вызывается и напрямую, и черезunstable_cache. - Если HttpOnly-cookie с сессией выставляются в Edge-маршрутах — оценить, мог ли на странице работать сторонний скрипт, и при сомнениях перевыпустить сессии.
Если проект давно не обновлялся и прыжок до 16.4.5 тянет за собой мажорные изменения, это задача для планового сопровождения, а не для пятничного хотфикса. Выбор между Next.js и альтернативами мы сравнивали в статье Next.js или Nuxt.
Почему это не последний такой релиз
С июля 2026 года Next.js выпускает исправления безопасности по расписанию: анонс за неделю, затем релиз в двух LTS-ветках. С конца августа в блоге фреймворка вышли плановые бюллетени за август, сентябрь и ноябрь и ещё два внеплановых обновления — 22 сентября и 14 октября. Для команд это значит, что обновление Next.js стоит встроить в регулярный цикл — с мониторингом анонсов и тестовым стендом, — а не ждать громкой CVE.
Часто задаваемые вопросы
Можно ли через эти уязвимости взломать сервер? Нет. Ни одна из семи не даёт удалённого выполнения кода. Главный риск — раскрытие данных между пользователями и отравление кэша.
Мой проект на Vercel — нужно что-то делать? Да, обновить next в зависимостях и передеплоить: исправления живут в коде фреймворка. Netlify и Pantheon прямо пишут, что за обновление отвечает команда приложения.
Достаточно ли обновиться? Не всегда. Уже сохранённые в кэше чужие ответы нужно сбросить, а на Netlify — обновить ещё и адаптер.
Какие версии исправлены? 16.4.5 (Active LTS) закрывает все семь проблем, 15.5.29 (Maintenance LTS) — три, актуальные для этой ветки.
Источники
- Next.js — November 2026 Security Release, 3 ноября 2026 (первоисточник).
- Netlify — Next.js security release (Nov 2026): what to know, 3 ноября 2026.
- Pantheon — Next.js Security Release now available, ноябрь 2026.
Обновим Next.js без простоя и потерь кэша
Проверим проект на уязвимые сценарии use cache, обновим до 16.4.5 или 15.5.29, прогоним регресс и настроим регулярные обновления фреймворка в рамках сопровождения.