Уязвимости в Next.js и React: кого касаются октябрьские исправления
Уязвимости в Next.js и React от 14 октября 2026 г.: кого касаются, как проверить версию без программиста, что сделать сегодня и что поручить исполнителю.
Если Ваш сайт или магазин работает на Next.js, в октябре для него вышли важные исправления безопасности. 14 октября 2026 г. команда Next.js выпустила версии 16.4.1 и 15.5.28, которые закрывают три уязвимости. Две из них могут позволить постороннему запустить на сервере собственный код без входа в систему. В тот же день вышли и исправления React для сайтов, использующих React Server Components.
Не каждый сайт на Next.js подвержен угрозе, а многие владельцы компаний вообще не знают, на чём работает их сайт. Ниже я объясняю, кого касаются эти уязвимости, как проверить версию без программиста, что сделать сегодня и что поручить исполнителю. Актуально на 30 октября 2026 г. Версии с исправлениями могут измениться, поэтому перед обновлением проверьте их в блоге Next.js.
Что произошло 14 октября
Next.js — популярный фреймворк для создания сайтов и магазинов на React, который развивает компания Vercel. 14 октября команда выпустила обновление безопасности вне обычного графика. Объявление в блоге Next.js описывает три ошибки:
- Оптимизация изображений и файлы SVG (CVE-2026-96889). Ошибка находится в библиотеке librsvg, которую использует sharp, то есть инструмент, уменьшающий изображения на сервере. В Linux с библиотекой glibc специально подготовленный файл SVG может привести к удалённому выполнению кода. Степень опасности: критическая.
- Функции «use cache» (GHSA-673q-mjm6-r5xr). Касается только Next.js 16 с включёнными Cache Components. Когда функция с директивой
use cacheвозвращает несколько типизированных массивов (typed arrays), атакующий без входа в систему может запустить код на сервере. Обходного решения нет. Степень опасности: критическая. - Server Actions (GHSA-p3m5-59mp-jv5r). Специально подготовленные запросы могут так нагрузить процессор, что сайт перестаёт отвечать (атака DoS). Степень опасности: высокая.
Обе критические уязвимости имеют в сообщениях на GitHub оценку 9,5 из 10 по шкале CVSS 4.0. Сингапурское агентство кибербезопасности CSA в предупреждении от 20 октября рекомендует немедленно обновиться. Vercel в объявлении не упоминает об атаках, а уязвимости CVE-2026-96889 нет в каталоге CISA KEV, то есть в американском перечне уязвимостей, эксплуатируемых в атаках (на 29 октября 2026 г.). Это хороший момент, чтобы закрыть уязвимости на сайте спокойно, а не в спешке.
Кого касаются эти уязвимости
Коротко: они касаются сайтов, на которых Next.js работает на сервере, то есть готовит страницы или изображения в момент, когда заходит клиент.
| Уязвимость | Кого касается | Версии с ошибкой | Исправление |
|---|---|---|---|
| Изображения и SVG (CVE-2026-96889) | оптимизация изображений на сервере с Linux (glibc) | 10.0.0–15.5.27 и 16.0.0–16.4.0 | 15.5.28 или 16.4.1; обходное решение: sharp 0.35.5 или новее |
| «use cache» | App Router с Cache Components | 16.0.0–16.4.0 | 16.4.1, без обходного решения |
| Server Actions (DoS) | App Router хотя бы с одним Server Action | 13.0.0–15.5.27 и 16.0.0–16.4.0 | 15.5.28 или 16.4.1 |
| React Server Components | пакеты react-server-dom-webpack, -parcel и -turbopack | 19.0.0–19.0.8, 19.1.0–19.1.9, 19.2.0–19.2.8, 19.3.0 | 19.0.9, 19.1.10, 19.2.9, 19.3.1 |
При уязвимости в «use cache» Next.js рекомендует обновиться, даже если в проекте нет таких функций. Сайт на Next.js получает исправления React вместе с обновлением Next.js, потому что у фреймворка есть собственная копия этих пакетов. Отдельно их обновляют проекты, которые используют React Server Components в другом инструменте, например в React Router или Waku.
Чего эти уязвимости не касаются:
- сайтов на WordPress, WooCommerce, Shoper и других системах без Next.js,
- приложений на чистом React без сервера (например, собранных в Vite): команда React прямо пишет, что код без сервера не подвержен угрозе,
- сайтов на Next.js со статическим экспортом (
output: 'export'). На хостинге тогда лежат только файлы HTML, CSS и JavaScript, а статический экспорт не поддерживает Server Actions и оптимизацию изображений по умолчанию. Такой сайт всё равно обновите при ближайшей пересборке.
Внимание: старые версии. Согласно политике поддержки Next.js, линии 14.x и более ранние больше не получают обновлений, а октябрьские исправления вышли только для 15.5 и 16.4. Сайт на Next.js 14 требует перехода на более новую линию. Линия 15 должна получать исправления безопасности до 31 января 2027 г., поэтому уже стоит планировать переход на 16.
Vercel, Netlify или собственный сервер
- Собственный сервер (VPS, Docker, хостинг с Node.js). Здесь риск самый большой, потому что изображения обрабатывает Ваш сервер, обычно с Linux. Популярные системы Debian и Ubuntu используют glibc.
- Netlify. В сообщении от 14 октября Netlify пишет, что изображения из
next/imageобрабатывает его собственная служба Image CDN, поэтому уязвимость в SVG этим путём не срабатывает. Однако уязвимость в «use cache» касается и сайтов на Netlify. Netlify рекомендует обновиться и удалить публичные предпросмотры старых развёртываний (deploy previews), потому что они могут остаться уязвимыми. - Vercel. Мне не удалось найти сообщения Vercel о том, что платформа сама защищает проекты от этих уязвимостей (при августовском выпуске такое сообщение было). Поэтому исходите из того, что проект нужно обновить и развернуть заново.
Как проверить, подвержен ли Ваш сайт угрозе
Способ 1: браузер (2 минуты)
- Откройте свой сайт в Chrome или Edge на компьютере.
- Нажмите F12 (или щёлкните правой кнопкой мыши и выберите Просмотреть код), а затем откройте вкладку Console (Консоль).
- Введите
next.versionи нажмите Enter.
Если появится номер, например "16.4.0", сайт работает на Next.js, и Вы знаете его версию. Версия 16.4.1 или выше либо, в линии 15, 15.5.28 или выше означает, что октябрьские исправления установлены. Числа между точками сравнивайте по отдельности: 15.5.3 — более старая версия, чем 15.5.28. Если консоль покажет ошибку «next is not defined», сайт, скорее всего, построен не на Next.js.
Этот способ не скажет, использует ли сайт «use cache» или Server Actions и какая версия sharp стоит на сервере. Это знает исполнитель.
Способ 2: файлы проекта
Если у Вас есть доступ к репозиторию (например, на GitHub), откройте файл package.json и найдите строку с "next". Запись ^16.4.0 означает диапазон, а точную версию показывает lock-файл: package-lock.json, pnpm-lock.yaml или yarn.lock. Программист проверит всё одной командой:
npm ls next sharp
Способ 3: панель хостинга
На Vercel и Netlify откройте последнее развёртывание и его логи сборки. В начале сборки Next.js выводит строку с версией, например «▲ Next.js 16.4.1». Проверьте рабочее (production) развёртывание, а не только тестовое.
Что сделать сегодня
- Выясните, работает ли сайт на Next.js и в какой версии. Достаточно способа 1 или вопроса исполнителю.
- Сделайте резервную копию кода и данных. Как сделать это как следует, я описываю в статье о резервной копии по правилу 3-2-1.
- Обновите Next.js как минимум до 16.4.1 (линия 16) или 15.5.28 (линия 15). В конце октября последней версией была 16.4.3 от 23 октября.
- Проверьте sharp. Его версия должна быть 0.35.5 или новее. Next.js 15.5.28 ещё допускает более старую ветку sharp 0.34, поэтому после обновления убедитесь, что фактически установилось.
- Соберите и разверните сайт заново, а затем прощёлкайте самые важные места: форму, корзину, вход, фотогалерею.
- Запланируйте следующее обновление. На 3 ноября Next.js анонсировал плановый выпуск безопасности с исправлениями семи уязвимостей средней степени опасности. Когда он выйдет, повторите шаги 2–5.
Команды для того, кто развёртывает сайт:
npm install next@16.4.1 # линия 16 (или более новая 16.4.x)
npm install next@15.5.28 # линия 15
npm ls sharp # ожидается: 0.35.5 или новее
Если сайт работает на 16.0–16.3, переход на 16.4.1 — это больше, чем мелкое исправление, и он требует теста перед развёртыванием. Если это займёт больше времени, временным обходным решением для уязвимости в изображениях будет принудительная установка sharp 0.35.5 или новее. Для уязвимости в «use cache» обходного решения нет.
Что поручить хостингу или исполнителю
Хостинг обычно обновляет систему и Node.js, но не пакеты Вашего приложения. Next.js и sharp входят в проект, поэтому их обновляет исполнитель сайта или человек с доступом к коду и развёртываниям. Кто за что отвечает, лучше всего записать в договоре на создание сайта.
Сообщение для копирования:
Здравствуйте, в связи с обновлением безопасности Next.js от 14 октября 2026 г. прошу:
- сообщить, на какой версии Next.js и sharp работает наш сайт (рабочая версия, тестовая версия и предпросмотры),
- обновить его как минимум до 16.4.1 или 15.5.28 и подтвердить версию после развёртывания,
- сообщить, использует ли сайт оптимизацию изображений, Server Actions и «use cache»,
- прислать план обновления после выпуска безопасности Next.js, анонсированного на 3 ноября.
Прошу ответить до [дата]. Спасибо.
Если исполнитель ответит, что сайт «не использует SVG», уточните подробности. По умолчанию Next.js не оптимизирует файлы SVG, а часть анализов связывает риск с включённой опцией dangerouslyAllowSVG. Однако официальное объявление этого не сужает, поэтому это не повод откладывать обновление.
Next.js работает на Node.js, поэтому заодно попросите проверить и версию Node.js. Я описываю это в статье об уязвимости Node2Shell (CVE-2026-111497) в Node.js и Brotli.
Если у Вас больше нет связи с исполнителем, я могу взять сайт на техническую поддержку. Пакет «Дежурство» (от 149 зл без НДС в месяц) включает мониторинг, резервные копии, обновления безопасности и реакцию в течение 2 рабочих дней. Standard (от 349 зл) и Pro (от 749 зл) добавляют часы работы и более быструю реакцию, в Pro до 4 часов.
Как не пропустить следующие исправления
С июля 2026 г. Next.js выпускает исправления безопасности по постоянному графику и объявляет о них за несколько дней. При серьёзных уязвимостях он выпускает их и вне очереди, как 14 октября. Достаточно трёх привычек:
- Следите за уведомлениями о безопасности Next.js на GitHub (Security Advisories) или за блогом Next.js.
- Включите Dependabot в репозитории проекта. Он сам предложит обновить пакеты, в которых обнаружены уязвимости.
- Согласуйте с исполнителем время реакции, например установку исправления критической уязвимости в течение 48 часов после его выхода.
Итог
Октябрьские уязвимости касаются сайтов, где Next.js работает на сервере: с оптимизацией изображений, Server Actions или «use cache». Проверьте версию в браузере, попросите исполнителя обновить сайт до 16.4.1 или 15.5.28 (или новее) с письменным подтверждением и не забудьте о выпуске от 3 ноября. Если Вы предпочитаете, чтобы это сделал кто-то другой, напишите мне: я проверю версии и обновлю сайт, а для более крупного проекта проведу аудит безопасности. Новые сайты на Next.js я создаю в рамках услуги «Индивидуальный сайт».
Частые вопросы
Нет, если только WordPress не служит лишь для ввода контента, а сайт отображает Next.js (так называемый headless WordPress). Эти уязвимости касаются Next.js и серверной части React (React Server Components). Редактор WordPress использует React только в браузере, поэтому эти исправления ему не нужны. Однако у WordPress и плагинов есть собственные обновления, которые не стоит откладывать.
Нет. Vercel собирает сайт из версий пакетов, записанных в проекте, поэтому Next.js нужно обновить в коде и заново развернуть сайт. Мне также не удалось найти сообщения Vercel о том, что платформа сама защищает проекты от уязвимостей от 14 октября.
При статическом экспорте (output: 'export') на сервере не работает Next.js, там лежат только готовые файлы HTML, CSS и JavaScript. Статический экспорт не поддерживает Server Actions и оптимизацию изображений по умолчанию, поэтому этим уязвимостям негде сработать. Обновите Next.js при ближайшей пересборке сайта.
Обновления безопасности входят в каждый пакет моей технической поддержки: «Дежурство» от 149 зл, Standard от 349 зл и Pro от 749 зл без НДС в месяц, со временем реакции от 2 рабочих дней до 4 часов. Разовую работу я выставляю по часовой ставке (160 зл без НДС) или по фиксированной цене после расчёта стоимости, который готовлю за 24 часа.
Проще всего следить за блогом Next.js и уведомлениями о безопасности в репозитории Next.js на GitHub. Исполнитель также может включить в репозитории Dependabot, который сам предложит обновить пакеты с уязвимостями. Лучше всего зафиксировать в договоре, в какой срок он устанавливает исправления критических уязвимостей.
Связанные услуги
Есть похожий проект?
Опишите, что Вам нужно, и в течение 24 часов я пришлю оценку. Новые клиенты получают скидку 20% на первый заказ.


