Next.js закрыл три опасные уязвимости: две позволяют выполнить код удалённо

14 октября Next.js выпустил внеплановое обновление безопасности. Оно устраняет две критические уязвимости с возможностью удалённого выполнения кода без аутентификации (RCE) и одну уязвимость высокой степени серьёзности, способную вызвать отказ в обслуживании (DoS). Исправления вошли в Next.js 16.4.1 и 15.5.28 — актуальные релизы веток Active и Maintenance LTS.
Next.js закрыл три опасные уязвимости: две позволяют выполнить код удалённо
Изображение носит иллюстративный характер

Обе RCE-уязвимости получили от Vercel, разработчика Next.js, оценку CVSS 9,5. Первая, GHSA-673q-mjm6-r5xr, затрагивает Next.js 16.0.0–16.4.0: риск возникает в приложениях App Router с включёнными Cache Components, если функция use cache возвращает больше одного типизированного массива.
Проблема находится в React Server Components (RSC), механизме React, который выполняет компоненты интерфейса на сервере. Уязвимы версии с 19.0.0 по 19.3.0 трёх пакетов: react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack. React описывает условие эксплуатации как «чрезвычайно редкие случаи, когда ответы передают несколько типизированных массивов и значение, контролируемое атакующим». Для Next.js это означает узкий сценарий с use cache, однако Vercel советует обновиться, даже если в приложении нет такой функции.
Вторая RCE-уязвимость, CVE-2026-96889 и GHSA-2464-fhr4-w9xw, связана с ошибкой управления памятью в librsvg, библиотеке обработки SVG. Next.js обращается к ней через пакет sharp. Под угрозой версии Next.js 10.0.0–15.5.27 и 16.0.0–16.4.0, если приложение передаёт в sharp SVG-файлы, предоставленные пользователем, и работает на Linux с glibc.
Next.js по умолчанию не оптимизирует SVG. Чтобы пропускать такие файлы через оптимизатор изображений, нужно включить dangerouslyAllowSVG. Риск также возможен в next/og, который создаёт изображения для предпросмотра в соцсетях, если функция работает в Node.js runtime. Исправление доступно в Next.js 16.4.1; для версии 15 нужен Next.js 15.5.28 вместе с sharp не ниже 0.35.5.
Третья проблема, GHSA-p3m5-59mp-jv5r, затрагивает App Router с хотя бы одним Server Action. Специально сформированный запрос способен загрузить процесс сервера на 100% CPU и помешать обслуживать остальные запросы. Приложения на Pages Router и проекты без Server Actions этой уязвимости не подвержены. Исправления выпущены в версиях 15.5.28 и 16.4.1.
Обновление Next.js на 16.4.1 должно подтянуть исправленный sharp: эта версия Next.js требует sharp 0.35.5. С веткой 15 ситуация менее надёжна: Next.js 15.5.28 допускает и уязвимую версию sharp 0.34.x, а обновление поверх существующей установки может сохранить старый пакет. Проверить установленную версию можно командой npm ls sharp; при необходимости sharp следует обновить до 0.35.5 или новее.
После обновления нужно пересобрать и повторно развернуть приложение. Если немедленный переход на новую версию невозможен, для защиты от SVG-уязвимости можно обновить sharp отдельно либо запретить обработку SVG:
sharp.block({ operation: ["VipsForeignLoadSvg"] })
Эта мера описана в рекомендациях sharp. Для уязвимостей use cache и Server Actions обходного решения нет: закрыть их можно только обновлением Next.js.
По состоянию на 15 октября уязвимости use cache и Server Actions не имели CVE и не отображались в ленте рекомендаций npm, которую использует npm audit. Поэтому сканеры зависимостей могут о них не предупредить. Уязвимость обработки изображений доступна через собственную рекомендацию sharp. Уровень риска также зависит от хостинга: Netlify сообщила, что её платформа не использует уязвимый путь оптимизации изображений, поэтому влияние на её инфраструктуру ограничено, но всё равно рекомендовала обновление.
Октябрьская ошибка стала третьей уязвимостью выполнения кода, связанной с обработкой изображений в Next.js с августа. В августе обнаружили проблему в libheif, доступную через sharp при обработке специально созданного AVIF-файла. В сентябре уязвимость в next/og позволяла изменить генерируемый SVG с помощью контролируемого атакующим текста. Теперь речь идёт о librsvg.
Собственный код оптимизатора изображений Next.js для октябрьского исправления не меняли: в 16.4.1 используется тот же оптимизатор, что и в 16.4.0, но обновлён sharp, включающий исправленную librsvg 2.63.2. CVE-2026-96889 опубликовали 23 сентября, а исправление в sharp появилось 27 сентября. Red Hat присвоила уязвимости оценку 7,8 и указала, что для эксплуатации требуется действие пользователя, например открытие вредоносного файла. Vercel оценила риск для Next.js в 9,5, поскольку уязвимый путь доступен по сети.
Исследователь Rafael B. Dias, сообщивший об ошибке librsvg, считает её причиной сентябрьской уязвимости next/og. Для той более ранней проблемы уже опубликован рабочий эксплойт, рассчитанный на конкретную конфигурацию сервера. По предупреждению сопровождающего sharp, итог атаки — выполнение кода или только аварийное завершение процесса — может зависеть от сборки Node.js: официальные бинарные файлы Node.js не защищены от такого типа атак на память.
Уязвимость RSC затрагивает те же три пакета, что и React2Shell — критический дефект максимальной степени серьёзности, раскрытый в декабре 2025 года и массово использовавшийся злоумышленниками. Однако новая проблема значительно уже: React связывает её лишь с «чрезвычайно редкими случаями», когда ответ содержит несколько типизированных массивов и значение под контролем атакующего. По состоянию на 15 октября публичных сообщений об атаках с использованием любой из трёх уязвимостей, исправленных 14 октября, не было.


Новое на сайте

20854Как дешёвые Android-смартфоны превращаются в чужие прокси? 20853В Индии имя звонящего появится на экране вместе с номером 20852Как проверить готовность команды к звонку с клонированным голосом? 20851Уязвимости MarkLogic: делегированные права могли открыть путь к администраторскому... 20850Как GitHub закрыл лазейку, угрожавшую тысячам npm-пакетов? 20849Hirudo подменяет банковские приложения, чтобы обойти их защиту 20848Как Vghost превратил старую ошибку Linux в путь к root? 20847Уязвимости в PAN-OS и Cisco Secure Email Gateway уже используют атакующие 20846Как уязвимость GitLab могла открыть сервер для чужого кода? 20845Уязвимость SAP Cloud SDK могла отправить OAuth2-секреты злоумышленнику 20844Уязвимость в Nextcloud открыла путь к веб-оболочкам на серверах 20843Смогут ли малые ИИ-модели превратить бытовую технику в ботнет? 20842Пять уязвимостей NGINX: кому грозит риск и как закрыть его 20841Тайный диктофон в OpenAI: что утверждают следователи 20840Как проверять уязвимость входа, не заходя дальше дозволенного?
Ссылка