Новая уязвимость безопасности в Next.js могла позволить злоумышленникам выполнять код на сервере через ImageResponse — функцию, генерирующую изображения для Open Graph и других социальных превью, сообщила Vercel. Риск возникает, когда приложение включает в изображение значения, контролируемые злоумышленником, например текст из URL-запроса. Vercel, разработчик Next.js, устранила уязвимость 22 сентября в версии 16.3.6.
Уязвимость, отслеживаемая как CVE-2026-94545, затрагивает Next.js версий с 16.2.0 по 16.3.5 при использовании ImageResponse в среде выполнения Node.js, которую Next.js использует по умолчанию. В своем сообщении Vercel оценивает ее как критическую с показателем CVSS 9.5. Версия ImageResponse для Edge не затронута, как и Next.js 15.
ImageResponse использует Satori, библиотеку Vercel, для преобразования макета изображения в SVG-код перед генерацией финального PNG. Уязвимые приложения — те, которые «передают контролируемые злоумышленником значения в содержимое SVG, атрибуты или стили во время генерации изображения», согласно сообщению. В примере из сообщения значение из URL-запроса помещается в элемент SVG title. Не уточняется, распространяется ли это на обычные элементы, такие как заголовок внутри div.
Чтобы найти места использования функции, следует искать импорт ImageResponse из next/og, например, в обработчиках маршрутов (route handlers) и файлах opengraph-image. Обработчики маршрутов создают изображение при поступлении запроса. Файл opengraph-image может создавать его во время сборки или при поступлении запроса.
По состоянию на 23 сентября The Hacker News не обнаружил публичных сообщений об атаках с использованием уязвимости или общедоступного эксплойт-кода. Исправлением является Next.js 16.3.6 — единственная пропатченная версия, устанавливаемая командой npm install next@16.3.6. По состоянию на 23 сентября реестр npm не содержал исправленного релиза для линейки 16.2, поэтому приложениям на 16.2 необходимо перейти на 16.3.6. Next.js 15.5.26 добавляет дополнительное усиление безопасности для next/og в линейке 15.5.
Если обновление невозможно, в качестве временного решения рекомендуется не включать контролируемые злоумышленником значения в содержимое SVG, атрибуты и стили, обрабатываемые Node.js ImageResponse. В сообщении не предлагается переходить на незатронутую версию для Edge, а документация Next.js помечает среду выполнения Edge как устаревшую.
При проверках The Hacker News 23 сентября npm audit не обнаружил проблем в Next.js 16.3.5, являющейся затронутой версией. Сообщение об уязвимости еще не было внесено в базу данных GitHub Advisory Database, и запись CVE для CVE-2026-94545 не была опубликована. Проверяйте версию Next.js напрямую. Satori включен в пакет Next.js, поэтому lockfile не указывает его как зависимость Next.js.
В сообщении и анонсе Vercel не указано, защищены ли приложения, размещенные на Vercel. В случае двух критических уязвимостей Next.js, исправленных в августе, компания заявила, что размещенные приложения защищены и не требуют обновления. Сообщение и анонс Vercel также не предоставляют способа проверить, были ли затронутые маршруты использованы до установки исправления. Затронутые версии доступны с момента выпуска Next.js 16.2 18 марта.
Сама ошибка находится в Satori. В собственном сообщении Satori, опубликованном в тот же день, говорится, что некоторые значения попадали в выходные данные SVG без надлежащего экранирования. Специально сформированное значение могло быть интерпретировано как SVG-код вместо обычного текста. В Next.js такие значения могли привести к уязвимостям в других библиотеках, от которых зависит Next.js, и к выполнению кода, заявила Vercel, не назвав эти библиотеки. В сообщении Satori та же CVE оценивается как умеренная (5.3), и указывается, что влияние зависит от способа использования выходных данных SVG. Разработчикам, использующим Satori напрямую, рекомендуется обновить его до версии 0.33.5, содержащей исправление.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Swati Khandelwal




