Все заметки
6 мин чтения

Семь уязвимостей Next.js в ноябре 2026: обновитесь до 16.4.5

3 ноября 2026 Next.js закрыл семь уязвимостей: утечки кэша между пользователями, отравление кэша, подмену ответов за прокси, обход запрета SVG и раскрытие HttpOnly-cookie. Кого касается и что делать.

новостибезопасностьNext.jsобновления

3 ноября 2026 года команда Next.js выпустила плановое обновление безопасности: версии 16.4.5 (Active LTS) и 15.5.29 (Maintenance LTS). Они закрывают семь уязвимостей. Критических среди них нет, но одна, по оценке самих разработчиков, высокой опасности: она может показать посетителю данные другого клиента.

Большинство проблем срабатывает только при определённых функциях фреймворка, поэтому важно не паниковать, а проверить свой проект. Разбираем по порядку.

Что закрыли

  • GHSA-mfr8-8qww-v76h (CVE-2026-119790) — утечка кэша между арендаторами, когда одна и та же функция use cache вызывается напрямую и через unstable_cache. Касается приложений с включёнными Cache Components (16.3+). В блоге Next.js оценена как высокая.
  • GHSA-vc7v-qv4w-wrv8 (CVE-2026-119351) — утечка контента между значениями root-параметров во вложенных функциях use cache (16.2+, Cache Components).
  • GHSA-rhh4-g77r-r9qj (CVE-2026-119349) — разные бинарные аргументы (например, Blob) у функции use cache могут получить одинаковый ключ кэша, и пользователь увидит чужой результат.
  • GHSA-vvgp-ww4w-46vf (CVE-2026-119350) — отравление общего «каркаса» страницы в самостоятельно размещённых приложениях (next start) с Cache Components и определённой структурой динамических маршрутов (16.4+).
  • GHSA-pc58-hwjq-p385 (CVE-2026-119348) — подмена ответов между клиентами: если маршрут App Router без изменений возвращает ответ, полученный через fetch с чужого сервера, а перед сайтом стоит HTTP/1.1-прокси, который отправляет запросы разных клиентов по одному соединению.
  • GHSA-f3mh-rxg3-f5g2 (CVE-2026-119346) — Edge-маршруты, которые ставят cookie через NextResponse.cookies.set(), дублируют её во внутреннем заголовке x-middleware-set-cookie. Его может прочитать JavaScript на той же странице, даже если cookie помечена HttpOnly.
  • GHSA-7qx7-33qx-rqx2 (CVE-2026-119347) — обход запрета SVG в оптимизации изображений: картинку с разрешённого источника можно выдать за AVIF, и она дойдёт до SVG-декодера, хотя dangerouslyAllowSVG выключен.

В ветке 15.5 актуальны только три последние проблемы, их и закрывает 15.5.29. Версия 16.4.5 закрывает все семь.

Кого это касается

  • Проектов на Next.js 16 ниже 16.4.5 и на 15.5 ниже 15.5.29.
  • В первую очередь — многопользовательских сервисов и сайтов, где кэшируются персональные данные или данные разных клиентов (личные кабинеты, SaaS, мультиязычные и мультисайтовые проекты) и включены Cache Components.
  • Сайтов, которые проксируют чужие ответы как есть: например, маршрут-«прослойка» к внешнему API.
  • Сайтов с Edge-маршрутами, которые ставят чувствительные cookie (токены, сессии).
  • Сайтов, которые оптимизируют картинки с внешних источников через встроенный next/image.

Обычный сайт-визитка без Cache Components и Edge-маршрутов, скорее всего, задет только частично. Но обновление всё равно нужно: оно небольшое и не меняет мажорную версию.

Как проверить свой проект

  • Посмотрите версию: в package.json строка "next" или команда npm ls next. Нужна 16.4.5+ или 15.5.29+.
  • Проверьте next.config: включён ли cacheComponents. Поищите в коде use cache и unstable_cache.
  • Поищите export const runtime = 'edge' и вызовы NextResponse.cookies.set() в этих маршрутах.
  • Найдите маршруты, которые возвращают результат fetch() без изменений (return await fetch(...)).
  • Посмотрите images.remotePatterns: с каких чужих доменов сайт оптимизирует картинки.
  • Если сайт делал подрядчик, спросите прямо: «Какая у нас версия Next.js и закрыты ли ноябрьские уязвимости 2026 года?»

Что делать

  • Обновите Next.js: npm install next@16.4.5 (или next@15.5.29 на ветке 15.5), пересоберите и задеплойте проект. В Docker нужна пересборка образа.
  • Если сайт на Netlify, по данным Netlify нужно ещё обновить адаптер @netlify/plugin-nextjs до 5.16.6 (при автоустановке достаточно передеплоить).
  • После обновления сбросьте кэш, если пользовались Cache Components: уже закэшированные «чужие» записи сами не исчезнут, пока не истекут или не будут сброшены.
  • До обновления — временные меры: не возвращать чужой fetch-ответ как есть (скопируйте тело и задайте заголовки сами), не ставить чувствительные cookie из Edge-маршрутов, сузить список разрешённых источников картинок.

FAQ

Я не использую Cache Components. Можно не обновляться?
Четыре из семи проблем вас не касаются, но остальные три (SVG, Edge-cookie и подмена ответов) зависят от других функций. Обновление до 16.4.5 не меняет мажорную версию, лучше его поставить.
У меня сайт на Vercel или Netlify. Платформа защитит сама?
Платформы закрывают часть сценариев на своей стороне, но версия Next.js в проекте — ваша. Обновите зависимость и передеплойте.

Нужна помощь?

Если у вас проект на Next.js и вы не уверены, что он обновлён, напишите нам. Проверим версию и конфигурацию, обновим и возьмём сайт на сопровождение. Подробнее — на странице /services/support.

Обсудить проект