Две уязвимости в Next.js открывают путь к выполнению произвольного кода на сервере без входа в систему. Третья позволяет перегрузить процессор и остановить обработку запросов. Под удар попадают приложения на версиях 15.5.27 и ниже, а также на ветке от 16.0.0 до 16.4.0. Упоминаний о применении этих уязвимостей в реальных атаках в уведомлениях Vercel нет.
Уязвимости Next.js в оптимизации изображений и Server Actions
Обновление вышло вне обычного графика. Два исправления перенесли из сентябрьского релиза безопасности: работа над ними зависела от вышестоящих библиотек, где сроки сдвинулись. Исправленные версии - 16.4.1 в активной ветке с длительной поддержкой и 15.5.28 в ветке сопровождения.
Удалённое выполнение кода через SVG
Самая давняя из трёх проблем живёт в API оптимизации изображений. Ей присвоен номер CVE-2026-96889. Речь о работе с памятью в библиотеке librsvg, которую Next.js использует для разбора SVG-файлов. Ошибка проявляется, когда в SVG-документе встречаются вложенные включения XML с повторяющимися объявлениями сущностей. Библиотека освобождает сущность, на которую ещё ссылается разборщик, и последующее обращение к этой области памяти может привести к выполнению чужого кода.
Запрос не требует учётных данных. Любой, кто может отправить картинку в API оптимизации изображений, способен попробовать эксплуатацию. Условие одно: Next.js должен работать в Linux с библиотекой glibc. Сборки на musl, включая Alpine, среди уязвимых в тексте уведомления не названы - командам стоит проверить свои базовые образы, а не полагаться на защищённость по умолчанию.
Red Hat, описавший эту ошибку в librsvg, ставит ей 7,8 балла по третьей версии CVSS. Это высокий уровень. Vercel в своём уведомлении относит ту же уязвимость к критическим: системы оценки у сторон разные.
Обходной путь - sharp версии 0.35.5 и выше. Обновление Next.js до исправленных версий подтягивает нужную версию sharp автоматически.
Выполнение кода в кэширующих функциях
Вторая критическая уязвимость касается только ветки 16 и приложений, где App Router работает вместе с Cache Components (компонентами кэша). Срабатывает она там, где кэширующая функция возвращает сразу несколько типизированных массивов - структур для работы с бинарными данными. Связанное уведомление опубликовали разработчики React. Патчи вышли в ветках 19.0, 19.1, 19.2 и 19.3 пакетов для серверных компонентов.
Обходных мер нет. Vercel просит обновляться немедленно, даже если функций, похожих на описанную, в приложении не нашлось. Разработчики React уточняют: уязвимость проявляется в редких случаях, когда ответ сервера передаёт несколько типизированных массивов вместе со значением, которым управляет атакующий.
Перегрузка процессора через Server Actions
Третья уязвимость отнесена к высокому уровню опасности. Составленные особым образом запросы заставляют приложение на App Router с хотя бы одной серверной функцией Server Action (код, который клиентская часть вызывает на сервере) расходовать процессорное время. Нагрузка блокирует остальные запросы в том же процессе, и сервис перестаёт отвечать.
Уязвимы версии начиная с 13.0.0. Приложения на Pages Router и проекты без Server Actions под угрозу не попадают. Родственное уведомление в React описывает ту же проблему для пакетов серверных компонентов; там помимо перегрузки процессора возможны сбои из-за нехватки памяти. Исправления перенесли в четыре поддерживаемые ветки React.
Что обновить и что проверить
Команда для ветки 15.5 - npm install next@15.5.28, для ветки 16 - npm install next@16.4.1. Загляните в файл блокировки зависимостей (lockfile) и убедитесь, что sharp в нём не ниже 0.35.5. Составьте список приложений, где включены Cache Components или Server Actions; просмотрите журналы запросов к API оптимизации изображений на необычные SVG-файлы. Контейнеры придётся пересобрать и развернуть заново, иначе в работающих экземплярах останутся старые зависимости.
Next.js лежит в основе множества рабочих проектов, а обе критические ошибки не требуют учётных данных и затрагивают функции, которые включены у большинства. Пока технические подробности не разошлись широко, у команд есть запас времени на обновление. Дальше риск быстрой эксплуатации растёт с каждым новым разбором механики атаки.
Ссылки
- https://nextjs.org/blog/nextjs-security-update-october-14-2026
- https://www.cve.org/CVERecord?id=CVE-2026-96889
- https://github.com/react/react/security/advisories/GHSA-h3gv-c5rc-p453
- https://github.com/vercel/next.js/security/advisories/GHSA-p3m5-59mp-jv5r
- https://github.com/vercel/next.js/security/advisories/GHSA-2464-fhr4-w9xw
- https://github.com/react/react/security/advisories/GHSA-xqc2-xf4c-x3h3
- https://github.com/vercel/next.js/security/advisories/GHSA-673q-mjm6-r5xr