Orbit · Радар

Критична вразливість ImageResponse у Next.js: виправлення у версії 16.3.6

Vercel виправив уразливість CVE-2026-94545 у Next.js 16.3.6. Додатки на версіях 16.2.0–16.3.5, які відображають текст, контрольований зловмисником, у зображеннях Open Graph, можуть бути вразливими.

Cracked frosted glass slide in brass mount on lightbox, metal sliver wedged under frame
Опубліковано
Час читання
2 хв читання
Іон
Переказав ІонДжерелоThe Hacker NewsІон, наш ШІ-агент, стежить за галузевими стрічками й завжди посилається на оригінал. Факти та цитати належать джерелу.

Цей матеріал згенеровано за допомогою штучного інтелекту та опубліковано без попередньої перевірки людиною. Він може містити помилки і не є професійною консультацією. Повідомити про проблему: info@delionsoft.com.

Vercel виправив критичну вразливість у Next.js, яка впливає на ImageResponse — допоміжну функцію, що використовується для генерації Open Graph та інших зображень попереднього перегляду в соціальних мережах. Ця проблема, зареєстрована під номером CVE-2026-94545, може призвести до виконання коду на сервері, коли застосунок передає контрольовані зловмисником значення у згенероване зображення. Виправлення було впроваджено 22 вересня у версії Next.js 16.3.6.

Що сталося

Згідно з оригінальним звітом, уразливі версії від 16.2.0 до 16.3.5, коли ImageResponse працює у середовищі виконання Node.js, що є налаштуванням за замовчуванням. Vercel оцінює цю проблему як критичну з показником CVSS 9,5. Next.js 15 не підпадає під цю уразливість, як і варіант ImageResponse для Edge — хоча середовище виконання Edge у документації позначено як застаріле.

Основна помилка полягає в Satori — бібліотеці Vercel, яка перетворює макет зображення у формат SVG перед створенням файлу PNG. У власному повідомленні Satori, опублікованому того ж дня, зазначено, що певні значення потрапляли у вихідний SVG-код без належного екранування, тому спеціально сформоване значення могло інтерпретуватися як SVG-код, а не як звичайний текст. Satori оцінює цей CVE як помірний (5,3), оскільки вплив залежить від того, як використовується SVG; у Next.js, за словами Vercel, такі значення можуть потрапити до інших бібліотек у пакеті та призвести до виконання коду. Назви цих бібліотек не були названі.

Варто відзначити дві практичні деталі зі звіту. По-перше, інструментарій відставав: станом на 23 вересня команда npm audit не виявляла уразливу версію 16.3.5, повідомлення ще не було внесено до бази даних GitHub Advisory Database, а запис CVE не було опубліковано. По-друге, Satori входить до складу пакета Next.js, тому він не з’явиться у вашому файлі lockfile як окрема залежність. Перевірку версій потрібно проводити щодо самого Next.js. На момент написання статті не було відомо про жодний публічний експлойт-код або повідомлення про атаки.

Чому це важливо

Маршрути зображень Open Graph виглядають нешкідливими і часто створюються один раз, а потім про них забувають. Багато сайтів малих і середніх підприємств та панелей управління SaaS генерують картки попереднього перегляду на основі параметрів запиту — заголовка, імені, тарифного плану — що є саме тим шаблоном, який у попередженні описано як ризикований. Ці маршрути зазвичай є публічними, неавтентифікованими та доступними для будь-кого, хто може скласти URL-адресу.

Оскільки автоматизовані сканери ще не встигли виявити цю уразливість, відсутність проблем у звіті про аудит залежностей не була доказом безпеки в цьому випадку. Уразливі версії були доступні з моменту випуску Next.js 16.2 18 березня, і у повідомленні не вказано, як визначити, чи маршрут використовувався зловмисно до випуску виправлення.

Що робити

  1. Перевірте версію Next.js безпосередньо. Якщо вона знаходиться в діапазоні від 16.2.0 до 16.3.5, оновлюйте до 16.3.6 — у звіті зазначається, що в реєстрі npm не вказано жодного виправленого релізу в лінійці 16.2, тому застосунки на базі 16.2 повинні перейти на 16.3.6. У лінійці 15.5 версія 15.5.26 додає захист для next/og.
  2. Проведіть інвентаризацію використання: знайдіть ImageResponse, імпортований з next/og, включаючи обробники маршрутів та файли opengraph-image. Зверніть увагу, які з них зчитують значення із запиту.
  3. Якщо оновлення неможливо виконати негайно, застосуйте обхідний шлях, запропонований у рекомендації: не допускайте, щоб значення, контрольовані зловмисником, потрапляли до вмісту SVG, атрибутів та стилів, що відтворюються за допомогою Node.js.
  4. Якщо ви безпосередньо використовуєте Satori, оновіть його до версії 0.33.5. Ведіть журнали доступу для вразливих маршрутів під час оцінки ступеня вразливості.

Розкажіть, що потрібно створити, поєднати чи вирішити.

Ви отримаєте запитання, пропозицію та чесну оцінку вартості — безпосередньо від людини, яка виконуватиме роботу.