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