14 октября Next.js выпустил обновление безопасности вне полосы, которое исправило два критически важных недостатка, позволяющих выполнять неаутентифицированный удалённый код, а также высокосерьёзный дефект отказа в обслуживании.
Одна из ошибок при выполнении кода связана с компонентами React Server, а другая — в librsvg — открытой библиотеке, Next.js использует через пакет Sharp для обработки образов SVG.
Исправления появились Next.js версиях 16.4.1 и 15.5.28, текущих выпусках Active и Maintenance long-term support (LTS).
Что было исправлено
Обновление охватывает три отдельных вопроса. Vercel, разрабатывающий Next.js, оценил оба нарушения выполнения кода как критические, каждая с оценкой CVSS 9,5. В таблице перечислены версии, которые затрагивают каждая проблема, и версия, которая её исправляет.
| Потомство | Затронутые версии | Исправлено в | Кто раскрыт |
|---|---|---|---|
Выполнение кода через использование кэша ( GHSA-673q-mjm6-r5xr ) |
16.0.0 по 16.4.0 | 16.4.1 | Приложения маршрутизатора приложений с включёнными компонентами кэша, где одна функция возвращает более одного типизированного массива use cache |
| Выполнение кода через образы SVG (CVE-2026-96889, GHSA-2464-fhr4-w9xw ) | 10.0.0 по 15.5.27 и 16.0.0 по 16.4.0 | 16.4.1, или 15.5.28 с 0.35.5 или более позднее sharp |
Приложения, которые передают SVG-файлы, предоставленные злоумышленниками, на Linux на базе glibc sharp |
| Отказ в обслуживании через действия сервера ( GHSA-p3m5-59mp-jv5r ) | 13.0.0 по 15.5.27 и с 16.0.0 по 16.4.0 | 15.5.28, 16.4.1 | Приложения роутеров приложений с хотя бы одним действием сервера |
Кто затронут
Первый недостаток при выполнении кода связан с компонентами React Server — функцией React, которая запускает компоненты пользовательского интерфейса на сервере. Рекомендации React охватывают три пакета: react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack в версиях 19.0.0–19.3.0. В нём этот недостаток описывается как затрагивающий «крайне редкие случаи, когда ответы переносят несколько типированных массивов и значение, контролируемое злоумышленником».
В Next.js-приложении триггер — это функция, которая возвращает более одного типизированного массива, поэтому доступны только приложения версии 16, которые включают компоненты кэша — функцию, лежащую в основе — доступны. Vercel советует обновляться, даже если в вашем приложении такой функции нет.use cacheuse cache
Вторая ошибка — это ошибка памяти в librsvg, библиотеке, которая отображает SVG-образы, которые Next.js доступны через пакетный пакет. Согласно сообщению, выполнение кода возможно, когда Next.js работает на Linux на базе glibc.sharp
По умолчанию Next.js не оптимизирует SVG-файлы. Для подачи их через оптимизатор изображения требуется включить параметр dangerouslyAllowSVG. Та же библиотека также рендерит изображения для , функции, которая создаёт изображения для социального предпросмотра, когда эта функция работает на Node.js runtime.next/og
Третий недостаток — это проблема отказа в обслуживании. В приложениях маршрутизатора приложений, которые определяют хотя бы одно действие сервера, сформированные запросы могут перевести один серверный процесс в полный процессор и остановить обработку других запросов. Приложения на роутере страниц или без действий сервера не затронут.
Воздействие может различаться в зависимости от хозяина. Netlify заявила, что их платформа не работает по пути оптимизатора изображения, и что недостатки имеют ограниченное влияние на её настройку, при этом рекомендуя обновление.
Что делать
Обновитесь до Next.js 16.4.1, если у вас есть версия 16, или до 15.5.28, если вы используете версию 15, затем перестройте и разверните её.
В совете Vercel говорится, что апгрейд Next.js заставляет менеджеров посылок автоматически подавать фиксированные. В версии 16 это работает, потому что 16.4.1 требует 0.35.5.sharpsharp
В версии 15 это может не измениться. 15.5.28 всё ещё поддерживает старую, изменённую версию 0.34.x, и при обновлении уже существующей установки эта версия остаётся в силе. Проверьте и обновите до версии 0.35.5 или выше, если он старше.sharpnpm ls sharpsharp
Если вы не можете обновить Next.js сразу, у дефекта изображения есть временная опция: убедитесь, что это 0.35.5 или выше, или заблокируйте рендеринг SVG , как описано в предупреждении Sharp. Недостатки и действия сервера не имеют обходного пути, и только апгрейд их закрывает.sharpsharpsharp.block({ operation: ["VipsForeignLoadSvg"] })use cache
По состоянию на 15 октября уведомления и Server Actions не имели CVE и не отображались в ленте npm-уведомлений, которые используют, поэтому сканеры зависимостей могут не предупреждать вас о них. Дефект изображения всё же проявляется, благодаря собственному совету.use cachenpm auditsharp
Почему дефект изображения постоянно возвращается
Это уже третий случай с августа, когда обработка изображений в Next.js вызвала ошибку при выполнении кода. В августе в libheif возникла ошибка, достигнутая через , позволяя выполнять код, когда оптимизатор обработал сформированный образ AVIF. В сентябре из-за дефекта в next/og текст под контролем злоумышленников изменял генерируемый SVG.sharp
Next.js на этот раз не изменил свой собственный код изображения. 16.4.1 поставляет тот же оптимизатор, что и 16.4.0, и исправляет недостаток изображения, подняв комплект до 0.35.5, который несёт патчированный librsvg (2.63.2).sharp
Ошибка librsvg, CVE-2026-96889, была опубликована 23 сентября и исправлена 27 сентября. Red Hat оценил 7.8 и заявил, что для эксплуатации требуется взаимодействие пользователя, например, открытие вредоносного файла. Vercel оценил экспозицию Next.js 9,5 и доступность по сети.sharp