Next.js 16.4.5 и 15.5.29: семь уязвимостей кеша и cookie закрыты
3 ноября 2026 года команда Next.js выпустила плановый релиз безопасности: версии 16.4.5 (Active LTS) и 15.5.29 (Maintenance LTS). Закрыто семь уязвимостей, одна из них в блоге отмечена как высокая. Больше всего рискуют проекты с Cache Components и директивой use cache, а также сайты, которые запускаются через next start на своём сервере. Что делать: обновить пакет next до патча своей ветки, пересобрать проект и сбросить кеш.
О релизе предупреждали заранее, 27 октября, — мы писали об этом в новости о плановом патче Next.js 3 ноября. Теперь опубликованы описания всех проблем, и можно понять, касается ли это вашего проекта.
Что закрыли
| Проблема | Уровень | Кого касается |
|---|---|---|
| Кеш одного арендатора попадает к другому при сочетании unstable_cache и use cache | высокий (по блогу) | проекты с Cache Components, где кешируемая функция читает корневой параметр, например tenant |
| Вложенные use cache отдают контент для другого корневого параметра | средний | мультисайты, мультиязычные и мультиарендные приложения |
| Бинарные аргументы use cache дают одинаковый ключ кеша | средний | код, который различает пользователей по бинарным аргументам |
| Отравление общего «каркаса» страницы | средний | self-hosted next start с Cache Components и выключенным Partial Prefetching |
| Чужой ответ клиенту из-за заголовков сжатия | средний | self-hosted за HTTP/1.1-прокси с конвейерными запросами |
| Значение cookie в служебном заголовке x-middleware-set-cookie | средний | Edge Route Handlers и Edge API routes с NextResponse.cookies.set() |
| Обход запрета SVG в оптимизации изображений | средний | проекты с images.dangerouslyAllowSVG: false и нативным декодером |
Общая черта большинства проблем — кеш. Next.js по ошибке считает два разных запроса одинаковыми и отдаёт второму пользователю то, что сгенерировано для первого. Для обычного сайта-визитки это неприятная, но редкая ситуация. Для SaaS, личного кабинета или мультирегионального магазина это уже утечка данных клиента.
Кого касается
- Проекты на ветках 16.x и 15.x. В анонсе исправления выпущены только для них. Если сайт работает на 14.x или старше, патча в этом релизе нет — это повод планировать переход.
- Мультиарендные приложения: один код обслуживает несколько клиентов, а разделение идёт по корневому параметру маршрута.
- Сайты на своём сервере (next start) за nginx или другим обратным прокси.
- Проекты с Edge-маршрутами, которые ставят чувствительные cookie.
Если в проекте нет Cache Components, use cache и Edge-маршрутов, практический риск ниже. Но обновление всё равно стоит поставить: часть исправлений касается обработки изображений и ответов, которые есть почти в любом приложении.
Что сделать
- Посмотрите версию: npm ls next или поле next в package.json.
- Обновите пакет: для ветки 16.4 — next@16.4.5, для 15.5 — next@15.5.29.
- Пересоберите проект и очистите кеш данных и страниц после выкладки, чтобы не раздавать записи, которые уже могли смешаться.
- Если есть мультиарендность, проверьте ключи кеша: идентификатор клиента должен явно входить в аргументы кешируемой функции.
- Проверьте Edge-маршруты: какие cookie они ставят и не читает ли их сторонний JavaScript на том же домене.
- Если SVG запрещены, но картинки берутся из чужих источников, сократите список разрешённых доменов в images.remotePatterns.
Обновление без сборки и проверки на тестовом стенде лучше не катить: между патч-версиями иногда меняется поведение кеша. Если нужен регулярный выпуск таких патчей, это работа для поддержки сайта, а разовую проверку уязвимостей можно начать с бесплатной проверки CMS и фреймворков.
Что ещё важно знать
В карточке GitHub для главной уязвимости (GHSA-mfr8-8qww-v76h, CVE-2026-119790) указан средний уровень и оценка CVSS 4.0 — 6,3, хотя в блоге Next.js она названа высокой. Для решения это ничего не меняет: обновляться нужно в любом случае.
Next.js выпускает такие релизы примерно раз в месяц по объявленному графику. Удобно заранее заложить в план работ день на обновление после каждого анонса — так патч не превращается в срочную задачу. Предыдущие критические исправления октября мы разбирали в материале про Next.js 15.5.28 и 16.4.1.
Вопросы и ответы
Нужно ли обновляться, если я не использую use cache?
Да. Большая часть проблем связана с кешем, но есть и исправления для Edge-маршрутов, сжатых ответов и оптимизации изображений. Патч внутри ветки обычно не меняет API, поэтому обновление недорогое.
Что делать сайтам на Next.js 14?
В анонсе 3 ноября исправления выпущены только для веток 16.4 и 15.5. Сайту на 14.x стоит запланировать переход хотя бы на 15.5, иначе каждый следующий релиз безопасности будет обходить его стороной.
Затронуты ли сайты на Vercel?
Часть уязвимостей описана именно для self-hosted запуска через next start. Но проблемы кеша и Edge-маршрутов зависят от кода приложения, поэтому обновлять пакет нужно и на Vercel.
Как понять, что данные уже утекли?
Прямого признака нет. Проверьте жалобы пользователей на чужие данные в кабинете и логи за период с включёнными Cache Components. После обновления очистите кеш, чтобы старые записи не продолжали отдаваться.
Читайте также
Next.js выпустит патч 3 ноября: семь уязвимостей средней опасности
КомментарииУтечка данных 8,8 млн датчан: урок про доступ подрядчиков
НовостиAndroid: октябрьский бюллетень, 25 уязвимостей, семь критических
КомментарииУтечка Capcom: 11,7 млн аккаунтов и урок про общие аккаунты
НовостиNext.js 15.5.28 и 16.4.1: две критические RCE, обновите проект
НовостиNode.js 22.23.4, 24.22.1 и 26.12.1: десять уязвимостей закрыты