Уязвимости Next.js в октябре 2026: обновитесь до 16.4.1
14 октября 2026 Vercel закрыл критические RCE-уязвимости в Next.js, исправленные в 15.5.28 и 16.4.1. Кого касается, как проверить проект и что сделать.
Мы делаем сайты на собственной CMS на Next.js, поэтому бюллетени безопасности этого фреймворка читаем в первую очередь. Осень 2026 года выдалась для Next.js насыщенной: 14 октября команда Vercel выпустила внеплановое обновление безопасности с двумя критическими уязвимостями удалённого выполнения кода (RCE). До этого, в конце сентября, вышла пачка исправлений средней и высокой критичности, а на 3 ноября уже анонсирован следующий плановый выпуск.
Рассказываем, что именно нашли, кого это касается, как проверить свой проект и что делать — без паники, но и без откладывания.
Что произошло
14 октября 2026 года в репозитории vercel/next.js опубликованы три рекомендации по безопасности. Исправления вошли в версии 15.5.28 и 16.4.1.
- GHSA-2464-fhr4-w9xw / CVE-2026-96889 — RCE в API оптимизации изображений при работе с SVG. Уязвимы Next.js с 10.0.0 по 15.5.27 и с 16.0.0 по 16.4.0. Проблема не в самом Next.js, а в библиотеке, которую он использует для обработки изображений: по данным GitHub Advisory, ошибка работы с памятью может привести к выполнению кода, когда Next.js запущен на Linux с glibc. Британская NHS England Digital в своём оповещении CC-4873 уточняет, что речь об ошибке use-after-free в librsvg при обработке специально сформированного SVG, и сообщает о появлении proof-of-concept эксплойта. Критичность по GitHub — 9.5 (CVSS v4).
- GHSA-673q-mjm6-r5xr — RCE в функциях use cache, возвращающих типизированные массивы. Уязвимы версии 16.0.0–16.4.0, исправлено в 16.4.1. Касается приложений на App Router с Cache Components, где есть функция use cache, возвращающая несколько типизированных массивов. Обходного решения нет; Vercel рекомендует обновиться, даже если у вас нет подобных функций. Критичность — 9.5.
- GHSA-p3m5-59mp-jv5r — отказ в обслуживании (DoS) в App Router при использовании Server Actions. Высокая критичность.
Кроме того, 22 сентября опубликована критическая уязвимость RCE в next/og ImageResponse (GHSA-vcvr-r3jv-pc5j), а 30 сентября — набор исправлений: SSRF в оптимизации изображений (GHSA-cjq9-62q9-8jv4, высокая критичность), несколько проблем отравления кэша SSG/ISR в самостоятельно размещённых приложениях, утечки через use cache и раскрытие информации в MCP-эндпоинте dev-сервера.
И, наконец, в блоге Next.js анонсирован плановый выпуск безопасности на вторник, 3 ноября 2026 года, — он закроет семь уязвимостей средней критичности. Подробности опубликуют вместе с релизом.
Кого это касается
- Любые проекты на Next.js 10–15.5.27 и 16.0–16.4.0, которые используют компонент next/image и встроенную оптимизацию изображений, — особенно если сайт размещён на собственном Linux-сервере или в Docker (а не на Vercel).
- Проекты на Next.js 16 с App Router и Cache Components.
- Проекты, где Server Actions доступны из интернета (а это почти любой проект на App Router с формами).
Если у вас лендинг или интернет-магазин, который когда-то сделал фрилансер на Next.js и «оно работает», — велика вероятность, что версия давно не обновлялась и подпадает под несколько пунктов сразу.
Как проверить свой проект
- Посмотрите версию Next.js. В корне проекта откройте package.json — поле next в dependencies. Точнее — команда npm ls next (или pnpm why next, yarn why next), которая покажет реально установленную версию.
- Посмотрите версию sharp. npm ls sharp. По данным GitHub Advisory, обходной путь для CVE-2026-96889 — убедиться, что используется sharp 0.35.5 или новее.
- Запустите аудит зависимостей: npm audit или pnpm audit. Свежие рекомендации из GitHub Advisory Database там уже отображаются.
- Проверьте, где и как запущен сайт. Self-hosted на Linux (VPS, Docker, next start) — это как раз сценарий для уязвимости в оптимизации изображений.
- Проверьте, используете ли вы use cache, next/og и Server Actions — поиском по коду.
Что делать: пошаговый план
- Создайте ветку и обновите Next.js до 16.4.1 (ветка 16) или 15.5.28 (ветка 15): npm install next@16.4.1 либо npm install next@15.5.28. Если проект на Next.js 13 или 14 — планируйте переход на поддерживаемую ветку: в рекомендации исправления выпущены только для 15 и 16.
- Обновите lock-файл и убедитесь, что sharp подтянулся новый (0.35.5+). Повторите npm ls sharp.
- Соберите проект и прогоните тесты, проверьте ключевые страницы, формы и изображения.
- Задеплойте и перезапустите все инстансы приложения, включая контейнеры: старые процессы должны завершиться.
- Если немедленно обновиться нельзя — хотя бы поднимите sharp до 0.35.5+ (это закрывает CVE-2026-96889), а при возможности временно запретите загрузку и оптимизацию SVG. Для уязвимости в use cache обходного пути нет.
- Проверьте логи на необычные запросы к /_next/image и всплески ошибок или нагрузки.
- Запланируйте обновление на 3–4 ноября под анонсированный выпуск безопасности. Лучше заранее выделить время, чем потом обновляться в спешке.
- Настройте автоматические уведомления о уязвимостях: Dependabot или Renovate в GitHub, подписка на Security Advisories репозитория vercel/next.js.
Почему это важно даже для небольшого сайта
Часто слышим: «У меня маленький сайт услуг, кому он нужен?» На практике злоумышленников интересует не ваш бизнес, а ваш сервер. Уязвимости с удалённым выполнением кода без авторизации эксплуатируют массово и автоматически: сканеры перебирают адреса в интернете, находят уязвимую версию и пытаются выполнить код. Взломанный сервер потом используют для майнинга, рассылки спама, размещения фишинговых страниц или как точку для атак на другие ресурсы. Последствия для владельца вполне ощутимые: сайт попадает в чёрные списки браузеров и поисковиков, хостинг блокирует аккаунт за нагрузку или спам, а если на сайте есть формы с заявками, под угрозой персональные данные клиентов — а это уже вопрос 152-ФЗ.
Есть и тонкость, характерная именно для Next.js. Многие проекты собраны один раз и годами живут без обновления зависимостей: package-lock.json фиксирует версии, и сайт продолжает работать на том, что было актуально при запуске. Поэтому уязвимость в оптимизации изображений, затрагивающая версии начиная с 10.0.0, может касаться сайта, который вы считаете «современным».
Наконец, обновление фреймворка — это не только безопасность. Свежие версии Next.js обычно лучше по скорости, а скорость загрузки влияет и на конверсию, и на позиции в поиске. Регулярные небольшие обновления обходятся дешевле, чем редкие большие миграции через несколько мажорных версий.
Типичные ошибки при обновлении
- Обновить next, но не пересобрать Docker-образ — в продакшене остаётся старая версия.
- Обновить только package.json, не обновив lock-файл.
- Забыть про второй экземпляр приложения (staging, старый поддомен), который тоже смотрит в интернет.
- Не проверить сторонние пакеты, которые жёстко требуют старую версию Next.js.
Как это решаем мы в WeCre8
Наша CMS построена на Next.js, поэтому такие новости — наша прямая зона ответственности. Для сайтов, которые работают на нашей CMS и нашем хостинге, мы сами отслеживаем бюллетени Next.js и React, обновляем фреймворк и зависимости, проверяем сборку и выкатываем обновление. Клиенту не нужно ничего делать и разбираться в номерах версий — это входит в сопровождение. Плановый выпуск 3 ноября мы также берём в работу. Наша CMS уже обновлена до Next.js 16.4.3.
Если же у вас Next.js-проект, сделанный другой командой и размещённый в другом месте, мы можем принять его на поддержку: провести аудит зависимостей, обновить Next.js, настроить мониторинг и регулярные обновления. Если проект сильно устарел, иногда разумнее перенести контент на нашу CMS, чем латать старую сборку, — обсудим честно, что выгоднее.
FAQ
- Мой сайт на Vercel. Я в безопасности?
- Платформа может применять собственные меры, но код приложения и версия Next.js остаются вашими. Обновиться до 16.4.1 или 15.5.28 нужно в любом случае — особенно из-за уязвимости в use cache, у которой нет обходного решения.
- Я не использую use cache. Можно не обновляться?
- Нет. Vercel прямо рекомендует обновиться даже без таких функций, а в том же выпуске закрыты уязвимости в оптимизации изображений и Server Actions.
- У меня Next.js 14. Что делать?
- В рекомендациях исправления выпущены для веток 15 и 16. Значит, нужно мигрировать на поддерживаемую версию — это работа на день-несколько, в зависимости от размера проекта.
- Это касается React-сайтов без Next.js?
- Перечисленные уязвимости — в пакете next. Но если вы используете серверные компоненты React в другом фреймворке, следите за бюллетенями React отдельно.
- Ваши клиенты должны что-то делать?
- Нет. Сайты на нашей CMS и хостинге обновляем мы сами.
Нужна помощь?
Если у вас проект на Next.js и вы не уверены, что он обновлён, — напишите нам. Проверим версии, обновим и возьмём на регулярное сопровождение. Подробнее — на странице /services/support.