Vercel исправила критическую уязвимость ImageResponse в Next.js

Vercel выпустила Next.js 16.3.6 с исправлением CVE-2026-94545 — критической уязвимости в ImageResponse с оценкой CVSS 9,5. Недочёт мог позволить выполнить код на сервере, если приложение передавало в генерацию изображения данные, контролируемые атакующим. Затронуты Next.js с 16.2.0 по 16.3.5 при работе ImageResponse в среде Node.js.
Где возникает риск
ImageResponse применяется для создания Open Graph и других изображений предпросмотра. Компонент Satori сначала преобразует описание макета в SVG, после чего создаётся итоговый PNG. Именно на этапе формирования SVG возникала проблема с экранированием некоторых значений.
Согласно уведомлению Satori, специально подготовленное значение могло попасть в SVG как код, а не как обычный текст. Vercel предупреждает: в Next.js это способно открыть путь к уязвимостям в других зависимостях фреймворка и привести к выполнению кода. Конкретные библиотеки компания не назвала.
Под угрозой находятся приложения, которые передают пользовательские данные в SVG-содержимое, атрибуты или стили при создании изображения. В качестве примера Vercel приводит параметр из URL-запроса, помещённый в элемент SVG title. В уведомлении не уточняется, относится ли риск к обычному тексту в элементах макета, например к заголовку внутри div.
Какие версии обновить
Исправление доступно только в Next.js 16.3.6. Для установки Vercel указывает команду npm install next@16.3.6. По состоянию на 23 сентября в ветке 16.2 исправленного релиза не было, поэтому приложения на ней должны перейти на 16.3.6.
Next.js 15 не подвержен этой уязвимости. Версия 15.5.26 добавляет дополнительное усиление защиты next/og в ветке 15.5. Edge-вариант ImageResponse также не затронут, однако документация Next.js помечает Edge Runtime как устаревающий, а рекомендаций переключаться на него в бюллетене нет.
Что проверить разработчикам
Командам следует найти использование ImageResponse, импортируемого из next/og, в обработчиках маршрутов и файлах opengraph-image. Обработчик маршрута формирует изображение при поступлении запроса, а opengraph-image может выполнять генерацию во время сборки либо по запросу.
Проверять нужно именно версию Next.js: Satori включён в пакет Next.js, поэтому в lockfile он не будет отображаться как отдельная зависимость фреймворка. На 23 сентября npm audit не сигнализировал о Next.js 16.3.5, а запись об уязвимости ещё отсутствовала в GitHub Advisory Database и публичной базе CVE.
Если обновление нужно отложить, Vercel советует исключить контролируемые пользователем значения из SVG-содержимого, атрибутов и стилей, которые обрабатывает Node.js ImageResponse. Разработчикам, использующим Satori напрямую, следует обновить библиотеку до версии 0.33.5. Для бизнеса практический приоритет — инвентаризировать маршруты генерации социальных изображений, убрать небезопасную передачу входных данных и обновить Next.js до 16.3.6.

