
Попередження Nuxt Image: неавтентифіковані атаки через /_ipx
Попередження GitHub для @nuxt/image: стандартний маршрут зображень /_ipx доступний без автентифікації і може дозволити спеціально створеному багатосторінковому зображенню аварійно завершити або потенційно скомпрометувати процес сервера.
@nuxt/image за замовчуванням реєструє маршрут перетворення зображень /_ipx у серверних розгортаннях і обслуговує його через ipx. GitHub-попередження: ipx має цілочисельне переповнення (GHSA-qf89-6xm4-66wm) під час декодування багатосторінкових зображень, тому спеціально створене джерельне зображення може пошкодити пам'ять. Зловмисник, що контролює джерельне зображення, може одним неавтентифікованим запитом аварійно завершити процес сервера; пошкодження пам'яті може дозволити віддалене виконання коду з привілеями цього процесу.
Уражені розгортання та версії
Проблема впливає на розгортання, де сайт працює як сервер зі стандартним постачальником ipx: /_ipx реєструється без конфігурації; байти зображення, контрольовані зловмисником, можуть стати джерелом IPX; /_ipx доступний без автентифікації за замовчуванням. Жодного модифікатора не потрібно, достатньо одного запиту. Уражені @nuxt/image: >= 2.0.0 і < 2.2.1, >= 1.0.0 і < 1.11.2, >= 0.6.0 і < 1.0.0. Розгортання з платформним постачальником зображень не уражені, якщо image.ipx не налаштовано; edge/worker, як Cloudflare Workers, не реєструють маршрут; статичні збірки теж. У відтворенні процес сервера працював як root у стандартному контейнері, роблячи доступними секрети, код і завантажені дані.
Виправлені випуски
Виправлено у @nuxt/image 2.2.1 і 1.11.2, що вимагають ipx 4.1.0 і 2.1.2. Перед декодуванням усіх сторінок багатосторінкового зображення (TIFF, GIF, WebP, AVIF) вони перевіряють загальну висоту і відхиляють запит з 400, якщо вона занадто велика. 2.2.1 за замовчуванням обмежує /_ipx поширеними вебформатами: джерело з форматом не з JPEG, PNG, WebP, GIF, SVG, AVIF, HEIC відхиляється з 403 до декодування. Для інших форматів задайте image.ipx.allowedInputFormats. Якщо джерела не повністю довірені, увімкніть image.ipx.restrictDecoders, що блокує декодери інших форматів; це стосується всіх використань sharp у процесі сервера. Ці опції недоступні у 1.x. Nuxt Image 0.x досяг кінця життєвого циклу і не отримає виправлення. ipx необов'язкова; після оновлення перевірте розв'язання, наприклад npm ls ipx, і оновіть безпосередньо, якщо проєкт теж залежить.
Обхідні шляхи та серйозність
Якщо оновлення неможливе, зареєструйте власний обробник на /_ipx, наприклад 404; модуль бачить наявний обробник і не встановлює свій. Можна заблокувати /_ipx/** у зворотному проксі, якщо маршрут не потрібен. Переконайтеся, що контрольовані зловмисником байти не стануть джерелом IPX: тримайте завантаження поза обслуговуваними публічними шляхами і обмежте image.domains контрольованими хостами. Перевірка розширення або Content-Type недостатня, бо декодер обирається за вмістом. allowedModifiers не допомагає, бо проблема доступна без модифікатора. Серйозність: High, CVSS 8.1. CVSS v3: мережевий вектор, висока складність, без привілеїв і взаємодії, незмінна область, високий вплив на конфіденційність, цілісність і доступність. Відомого CVE немає. Слабкість: CWE-20, Improper Input Validation. Подяка @l8BL за звіт, відтворення і скоординоване розкриття. Опубліковано 30 жовтня 2026 року як GHSA-p5vf-pjf5-ggj3.
Джерела: Попередження GitHub · Попередження IPX · Cloudflare · GitHub
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.