Критические уязвимости Next.js в августе 2026: что обновить

24.08.20267 мин чтения
Дмитрий Мещеряков
Технический директорДмитрий Мещеряков

25 августа 2026 года команда Next.js выпустила версии 15.5.24 и 16.3.3, которые закрывают две критические уязвимости удаленного выполнения кода без аутентификации. Релиз вышел на день раньше первоначального плана после обнаружения второй проблемы.

Обновление особенно важно для self-hosted проектов, которые используют встроенную оптимизацию изображений Next.js или работают на Windows-сервере. Но проверять нужно любой production-проект на уязвимой версии: условия у двух проблем разные, а отсутствие Windows не исключает риск при обработке AVIF.

Короткий ответ: Next.js 15 нужно обновить минимум до 15.5.24, Next.js 16 - минимум до 16.3.3. Для Next.js 14 и более старых веток отдельного исправленного релиза в августовском advisory нет: если версия входит в затронутый диапазон, потребуется контролируемый переход на поддерживаемую ветку. После обновления обязательно пересоберите и заново разверните приложение.

Что произошло 25 августа 2026 года

Первоначально Next.js анонсировал на 26 августа исправление одной критической уязвимости. После обнаружения дополнительной проблемы релиз перенесли на 25 августа и опубликовали два security advisory.

Уязвимость Условия риска Затронутые версии Исправлено в
RCE при обработке AVIF, GHSA-2xp9-vwfh-vxw4 Next.js Image Optimization обрабатывает контролируемое атакующим AVIF-изображение >=10.0.0 <15.5.24, а также версии 16 ниже 16.3.3 15.5.24, 16.3.3
RCE на Windows, CVE-2026-75604 / GHSA-p293-qw3h-jr36 Windows-файловая система, совместное использование Pages Router и App Router без Cache Components >=13.4 <15.5.24, >=16.0 <16.3.3 15.5.24, 16.3.3

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

Уязвимость AVIF Image Optimization

Первая проблема находится в библиотеке libheif, которую использует sharp, а Next.js применяет sharp во встроенном Image Optimization API. Специально подготовленный AVIF-файл может привести к выполнению кода на сервере во время оптимизации изображения.

В advisory указана критическая оценка 9,5 по CVSS 4.0. Уязвимость важна не только для сайтов, которые явно публикуют .avif в репозитории. Опасный сценарий возникает, когда серверный оптимизатор может получить и обработать изображение, контролируемое внешним пользователем или сторонним источником.

Проверьте:

  • используется ли компонент next/image на страницах с пользовательским контентом;
  • разрешены ли внешние источники через images.remotePatterns или старый images.domains;
  • могут ли пользователи, поставщики или интеграции менять URL изображения;
  • есть ли загрузка изображений в CMS, личном кабинете, каталоге или маркетплейсе;
  • проходят ли AVIF-файлы через /_next/image на собственном сервере;
  • не проксируется ли внешний URL в оптимизатор через API или кастомный loader.

Исправленные версии временно отключают оптимизацию AVIF, пока upstream-исправление не пройдет по цепочке зависимостей. Это может изменить размер и способ отдачи AVIF, поэтому после патча нужно проверить не только безопасность, но и фактическую загрузку изображений и показатели производительности.

Не пытайтесь заменить обновление только запретом расширения .avif в форме. MIME-тип, содержимое файла и путь обработки могут не совпадать с расширением. Официальный патч остается основным способом закрыть проблему.

RCE на Windows-серверах

Вторая уязвимость получила идентификатор CVE-2026-75604. Она относится к приложениям, которые одновременно используют Pages Router и App Router, работают без Cache Components и размещены на файловой системе Windows.

По официальному advisory Linux и macOS не затронуты именно этой проблемой. Это не делает старую версию Next.js безопасной в целом: отдельно остается AVIF-уязвимость.

Проверьте проект по четырем условиям:

  1. Production-процесс Next.js действительно запущен на Windows, а не только собирается на Windows-машине.
  2. В проекте одновременно существуют каталоги pages и app с рабочими маршрутами.
  3. Используется уязвимая версия Next.js.
  4. Cache Components не включены.

Для затронутых Windows-приложений известного workaround нет. Нельзя считать перенос за reverse proxy или дополнительное правило WAF полноценной заменой патча. Приоритетное действие - обновить зависимость и развернуть новую сборку.

Как быстро определить версию и условия риска

Начните с фактической версии в каждом production-репозитории:

npm ls next

Для pnpm и Yarn:

pnpm list next
yarn why next

Проверить версию непосредственно из установленного пакета можно так:

node -p "require('next/package.json').version"

Не ограничивайтесь диапазоном в package.json. Строка вроде ^15.5.0 не доказывает, что production уже использует 15.5.24. Сверьте lock-файл, последний build-артефакт и журнал развертывания.

Затем проверьте конфигурацию и структуру проекта:

git ls-files "app/**" "pages/**" "src/app/**" "src/pages/**"
rg "remotePatterns|images\.domains|image/avif|cacheComponents" next.config.* src app pages

Если rg не установлен, используйте поиск IDE или штатные средства своей системы. Отсутствие найденной строки image/avif не отменяет обновление: важен весь путь обработки входного изображения.

Как обновить Next.js до исправленной версии

Обновление выполняйте через репозиторий и обычный CI/CD, а не командой на production-сервере.

Next.js 16

npm install next@16.3.3

Next.js 15

npm install next@15.5.24

Эквивалент для pnpm:

pnpm add next@16.3.3

И для Yarn:

yarn add next@16.3.3

После установки проверьте diff package.json и lock-файла. Security-патч не стоит смешивать с массовым обновлением React, Node.js и десятков несвязанных зависимостей: небольшой и понятный diff проще проверить и откатить.

Воспроизводимая последовательность для проекта с npm:

npm ci
npm run lint
npm test
npm run build

Запускайте только скрипты, реально определенные в проекте. Если автоматических тестов мало, дополните их ручной проверкой критичных пользовательских сценариев.

Что делать с Next.js 14 и более ранними версиями

Августовский релиз предоставляет исправления для поддерживаемых веток 15.5 и 16.3. При этом AVIF-advisory включает версии начиная с Next.js 10, а Windows-advisory - начиная с 13.4 при выполнении остальных условий.

Для legacy-проекта порядок действий такой:

  1. Зафиксировать точную версию, ОС production и способ обработки изображений.
  2. Сопоставить конфигурацию с обоими advisory, а не только с номером CVE.
  3. Проверить официальный список исправленных версий: отдельного патча для 14.x в этом релизе нет.
  4. Подготовить переход на 15.5.24 или 16.3.3 по официальному upgrade guide.
  5. Выполнить миграцию на staging и проверить несовместимости до production-деплоя.

Переход с 14-й ветки на 15-ю или 16-ю - это не обычная замена patch-версии. Такой релиз может затронуть поведение кеша, маршрутизацию, React и сборку, поэтому нужен отдельный план отката.

Что проверить после обновления

Успешная команда next build еще не означает, что сайт работает корректно. Проведите smoke-тест в окружении, максимально близком к production.

Область Что проверить
Изображения локальные и внешние изображения, AVIF, WebP, /_next/image, ошибки sharp, размеры файлов
Роутинг маршруты из pages и app, динамические страницы, middleware, редиректы
Бизнес-сценарии вход, формы, заявка, корзина, заказ, оплата, личный кабинет
API Route Handlers, API Routes, Server Actions, webhooks и внешние интеграции
SEO server-rendered HTML, canonical, robots, sitemap, коды ответов и метаданные
Наблюдаемость 4xx/5xx, latency, логи Node.js, ошибки оптимизатора и потребление памяти

Особое внимание уделите изображениям. Исправленные версии отключают оптимизацию AVIF, поэтому сравните Core Web Vitals и объем передаваемых файлов до и после релиза. Безопасность важнее временного ухудшения размера изображения, но проблему производительности нужно увидеть и запланировать, а не обнаружить через падение конверсии.

После первого развертывания наблюдайте за ошибками и ключевыми действиями пользователей. Предыдущий рабочий артефакт сохраняйте до окончания периода контроля.

Почему WAF и CDN не заменяют патч

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

Для Windows-проблемы официальный advisory прямо говорит об отсутствии известного workaround. Для AVIF исправленные версии меняют поведение оптимизатора. Поэтому безопасная стратегия состоит из обновления зависимости, новой сборки и проверки production, а не из одного правила на периметре.

Если проект размещен на управляемой платформе, проверьте ее официальный security notice для конкретного релиза. При этом версия Next.js в репозитории и следующая сборка все равно должны быть понятны команде.

Приоритет действий для бизнеса

Если у компании несколько сайтов и приложений, сначала обновляйте публичные системы, которые:

  • принимают пользовательские изображения или показывают контент из внешней CMS;
  • работают на self-hosted Next.js;
  • размещены на Windows;
  • содержат личный кабинет, оплату, персональные данные или административный интерфейс;
  • используют неподдерживаемую ветку Next.js;
  • не имеют проверенного процесса отката.

Для разового патча достаточно контролируемого security-релиза. Если инвентаризации нет, старые проекты не собираются, а обновление зависимости регулярно ломает production, проблема уже относится к сопровождению архитектуры. В таком случае полезен аудит и развитие высоконагруженного backend или техническая оценка проекта на странице разработки на Next.js.

Практический пример миграции действующего магазина можно посмотреть в кейсе Автопилот78: Next.js, SEO и кастомная админка. Там перенос технологической платформы выполнялся вместе с сохранением каталога, пользовательских сценариев и поисковой структуры.

Бесплатный SEO-аудит вашего сайта

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

FAQ

Какие версии Next.js нужно установить после августовского релиза?

Для ветки 15 нужна версия не ниже 15.5.24, для ветки 16 - не ниже 16.3.3. Именно эти версии указаны как исправленные в официальных advisory от 25 августа 2026 года.

Уязвим ли Next.js на Linux?

Windows-уязвимость CVE-2026-75604 не затрагивает Linux и macOS. Но AVIF Image Optimization RCE не ограничена Windows, поэтому Linux-проект на затронутой версии тоже нужно проверить и обновить.

Безопасен ли проект, если мы не включали AVIF в next.config.js?

По одной настройке это утверждать нельзя. Проверьте весь путь изображений: next/image, внешние источники, пользовательские загрузки, CMS и запросы к /_next/image. Независимо от результата официальный патч остается рекомендуемым действием для уязвимой версии.

Нужно ли обновляться, если сайт размещен на Vercel или другой платформе?

Сначала прочитайте официальный notice своего провайдера: управляемая платформа может применять дополнительные меры. Но не переносите вывод между разными хостингами и не оставляйте уязвимую зависимость без контроля. Следующая production-сборка должна использовать исправленную версию.

Можно ли просто отключить Image Optimization?

Это может уменьшить конкретную поверхность атаки, но не заменяет обновление и не закрывает Windows-уязвимость. Для затронутых Windows-приложений официальный advisory не предлагает workaround.

Что делать, если проект остается на Next.js 14?

Определите, входит ли конфигурация в затронутый сценарий, и подготовьте переход на поддерживаемую ветку. В августовском релизе отдельной исправленной версии 14.x нет, а major-миграцию нужно проверять на staging.

Достаточно ли обновить package.json?

Нет. Нужно обновить lock-файл, пересобрать приложение, развернуть новый артефакт и убедиться, что production действительно работает на исправленной версии.

Источники

Оставьте свои контакты — мы перезвоним, разберёмся в задаче и предложим оптимальный путь. За плечами более 350 проектов, каждый из которых мы запускали с индивидуального подхода. Гарантируем экспертную консультацию в рабочее время.