Next.js отправляет патч вне диапазона для двух критических ошибок RCE в кэшировании и обработке SVG

14 октября Next.js выпустил обновление безопасности вне полосы, которое исправило два критически важных недостатка, позволяющих выполнять неаутентифицированный удалённый код, а также высокосерьёзный дефект отказа в обслуживании. Одна из ошибок при выполнении кода связана с компонентами React Server, а другая — в librsvg — открытой библиотеке, Next.js использует через пакет Sharp для обработки образов SVG. Исправления

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

Сообщество

Продолжите обсуждение на форуме

Перейти на форум