Next.js выпустил обновления безопасности для веток 15.5 и 16.3

Next.js выпустил версии 16.3.8 и 15.5.27, исправляющие уязвимости кеширования, раскрытия данных и оптимизации изображений. Командам рекомендуют обновить приложения и проверить используемые функции.

· 3 мин чтения · 5 комментариев

30 сентября 2026 года Next.js выпустил обновления безопасности 16.3.8 и 15.5.27. Как пишет Next.js Blog, исправление одной критической и одной уязвимости высокой серьёзности ранее отложили из-за задержки с зависимостями. Теперь команда рекомендует обновить Next.js в приложениях. В перечне проблем — подмена содержимого кеша, раскрытие данных и серверные запросы через оптимизацию изображений.

Какие приложения затронуты

Версия 16.3.8 относится к ветке Active LTS, а 15.5.27 — к Maintenance LTS. Не каждая описанная уязвимость касается любого проекта на Next.js: условия зависят от настроек изображений, размещения приложения, роутера, сборщика и возможностей кеширования.

Уязвимость высокой серьёзности в Image Optimization связана с удалёнными изображениями. Если атакующий контролирует URL, разрешённый настройками приложения, сервер может отправить запрос, например, в диапазон частных IP-адресов. Это Server-Side Request Forgery, или SSRF. Если images.remotePatterns не настроены, приложение этой проблеме не подвержено.

Несколько ошибок относятся к кешу страниц. В самостоятельно размещённом приложении с Pages Router и страницами SSG или ISR запись одной страницы может быть заменена содержимым другого маршрута. Посетители будут видеть неверное содержимое до повторной проверки записи. Приложения на Vercel этой проблемой не затронуты.

Другой случай связан с корневым маршрутом catch-all в сочетании со статически генерируемыми маршрутами или ISR. Один специально составленный запрос без авторизации может повлиять на общий кеш ответов. При включённых Cache Components вложенные функции use cache иногда формируют ключ без корневого параметра маршрута. Тогда содержимое для одного значения параметра может попасть в ответ для другого. Какие именно значения окажутся раскрыты, атакующий выбирать не может.

Есть риск и для редакционных превью. Если сайт использует Cache Components либо experimental.useCache, а кешируемые функции возвращают данные, зависящие от Draft Mode, одновременные запросы редактора и посетителя могут использовать одно незавершённое заполнение кеша. Посетитель получит неопубликованное содержимое без авторизации. Если при этом заранее создаётся страница, черновик может сохраниться в ней и показываться другим посетителям до повторной проверки.

Ещё две проблемы касаются доступа к информации. В App Router маршруты изображений метаданных, включая opengraph-image и twitter-image, при сборке webpack игнорируют настройку dynamicParams. Из-за этого можно запросить изображения для динамических сегментов, исключённых из generateStaticParams(). Сборки Turbopack не затронуты. Другая ошибка есть только в next dev: вредоносный сайт, открытый разработчиком, может получить через точку Model Context Protocol путь к проекту, фрагменты кода из сообщений об ошибках, список маршрутов и логи. В рабочем развёртывании эта точка доступа не обслуживается.

Что проверить команде сайта

Первый шаг — выяснить, какая ветка Next.js используется, и установить соответствующее обновление: [email protected] для 16.3 или [email protected] для 15.5. Затем стоит сопоставить конфигурацию приложения с условиями уязвимостей, а не делать вывод лишь по факту использования Next.js.

Для сайта с внешними изображениями важна настройка images.remotePatterns. Для самостоятельно размещённого проекта с Pages Router — наличие страниц SSG или ISR. Командам, использующим Cache Components и Draft Mode, нужно отдельно проверить работу с редакционными черновиками: речь идёт не только о неверном ответе, но и о возможном появлении неопубликованного содержимого у посетителей.

Владельцам сайтов и маркетологам полезно различать последствия. В одном случае посетитель увидит содержимое другого маршрута, в другом может получить черновик. Проблема в next dev касается среды разработки, а не опубликованного сайта. Вопрос к команде — какие из перечисленных возможностей используются в проекте и обновлена ли зависимость.

Моё мнение

Я бы не делал из этого релиза общий вывод о ненадёжности Next.js. У описанных сценариев разные условия: самостоятельное размещение и Pages Router, работа с Draft Mode или запуск next dev. Небольшой команде, на мой взгляд, полезно иметь простую карту проекта: где формируются страницы, что кешируется и откуда загружаются изображения.

Я бы не откладывал обновление только потому, что часть пунктов кажется неприменимой. Сначала установить исправленную версию своей ветки, затем проверить настройки и затронутые сценарии — такой порядок мне кажется проще, чем разбираться с конфигурацией уже после появления проблемы.

Источники

Откуда новость. Текст — пересказ своими словами, факты — из источника, мнение — автора.

  1. September 2026 Security Release nextjs.org

Об авторе

Павел Новак

опытный full-stack-разработчик

Делаю веб-сервисы для небольших компаний в Брно. На старте стараюсь выбрать стек, который команда сможет спокойно поддерживать через пару лет.

Все публикации автора

CMS 3 мин чтения

WordPress 7.1.3 закрывает семь уязвимостей и исправляет сбой загрузки изображений

WordPress 7.1.3 закрывает семь уязвимостей и исправляет критическую ошибку, из-за которой на некоторых хостингах не загружались изображения. Владельцам сайтов рекомендуют установить обновление.

Фронтенд 4 мин чтения

В $mol добавили поддержку Node.js для хранения данных и новые инструменты интерфейса

В обзоре изменений $mol и Giper Dev за август и сентябрь — поддержка Node.js в $mol_storage, новые возможности редактора и инструменты интерфейса. Рассказываем, что стоит проверить разработчикам.

Написать комментарий

Не публикуется. Пришлём ссылку, чтобы подтвердить комментарий.

Без ссылок и рекламы. Первый комментарий публикуется после проверки. Отправляя комментарий, вы соглашаетесь с политикой конфиденциальности.

  1. у себя на учебном сайте проверил настройки image optimization: внешние картинки разрешены только с нужного домена, так что после таких обновлений я бы сначала сверил именно allowlist и обновил next.js, а уже потом проверял кеширование и загрузку изображений по этапам

    1. @kestutis.sakalauskas, ещё стоит проверить, не проксирует ли оптимизатор изображения с адресов, которые могут вести на внутренние IP: одного allowlist домена мало, если разрешённый источник сам перенаправляет запросы. А после обновления полезно отдельно прогнать загрузку внешних картинок — так проще заметить, если строгие настройки случайно сломали легитимный сценарий 🙂

    2. а allowlist у тебя проверяет только домен или ещё ограничивает редиректы и адреса после разрешения имени? в описании как раз риск в том, что сервер может сходить в частную сеть через оптимизацию изображений, поэтому интересно, какой уровень проверки там нужен

      1. Павел Новак Автор публикации

        Одного allowlist по домену мало: проверьте, что после DNS-разрешения и каждого редиректа адрес остаётся публичным; если это нельзя гарантировать штатной конфигурацией, безопаснее отключить удалённые источники и обновить Next.js.

      2. Здесь важна проверка не только имени хоста: после DNS-разрешения и каждого редиректа нужно убедиться, что итоговый адрес не попадает в частный или служебный диапазон. Иначе разрешённый домен может перенаправить запрос оптимизатора внутрь сети; плюс полезно ограничить протоколы и число редиректов.