Что там у нас по уязвимостям во фронте? 👨💻
На фоне массовой суеты вокруг PHP, то невольно задумываешься, а как в твоём болоте дела. Поэтому собрал самые страшные уязвимости в популярных фреймворках за октябрь
Next.js: RCE через use cache
Уязвимость в приложениях с App Router и Cache Components могла привести к удалённому выполнению кода на сервере без аутентификации.
Условие: в приложении есть функция с директивой use cache, возвращающая несколько типизированных массивов (TypedArray).
Затронуты: Next.js 16.0.0–16.4.0 включительно.
Исправлено: 16.4.1.
Next.js: RCE при оптимизации SVG
Ошибка работы с памятью в библиотеке, используемой для оптимизации изображений, могла привести к выполнению кода на сервере без аутентификации при обработке SVG
Условие: Next.js работает на Linux с glibc, а SVG обрабатываются через Image Optimization API с уязвимой зависимостью
Затронуты: Next.js 10.0.0–15.5.27 и 16.0.0–16.4.0 включительно
Исправлено: 15.5.28 и 16.4.1
Angular: XSRF-токен мог уйти на чужой домен
Angular и браузер по-разному разбирали некоторые URL. Фреймворк считал адрес внутренним и добавлял защитный заголовок, а браузер отправлял запрос на сторонний сервер.
Для этого атакующий должен влиять на адрес запроса, меняющего данные, через HttpClient. Его сервер также должен разрешать такой запрос через CORS.
Исправление есть в @angular/common 20.3.34 и 21.0.3. Ветка 22.x этой ошибкой не затронута.
Nuxt: ссылка могла выполнить JavaScript
Проблема касается приложений с pages: false, которые передают недоверенный URL в NuxtLink :to. Нажатие на специально подготовленную ссылку могло запустить JS в контексте сайта.
Починили в Nuxt 4.6.0. Для Nuxt 3 исправления не будет: поддержка ветки уже закончилась.
SvelteKit: чтение файлов и SSRF
Здесь две отдельные проблемы.
Первая — в vite preview на Windows. Если preview доступен посторонним по сети или через туннель, из него можно было прочитать файлы вне каталога сборки. Например, исходники или конфигурацию, доступные серверному процессу.
Production-адаптеры, dev-сервер и preview на других ОС этой ошибкой не затронуты.
Вторая — SSRF. В некоторых сценариях SvelteKit делает серверные запросы к самому приложению. Если их origin можно подменить через непроверенные заголовки, атакующий мог направить запрос на свой сервер, а оттуда — редиректом к внутреннему сервису. Возможность атаки зависит от адаптера и настроек сервера.
Оба исправления вошли в SvelteKit 3.0.0. При переходе с 2.x потребуется проверить изменения для миграции. До обновления Windows preview лучше держать закрытым для посторонних.
Что было яркого до октября?
Next.js: RCE при генерации изображений через next/og
Уязвимость в зависимостях Node.js-реализации ImageResponse из next/og могла привести к выполнению кода при генерации изображений.
Условие: контролируемые атакующим значения попадают в содержимое, атрибуты или стили SVG, используемого для генерации изображения.
Затронуты: Next.js >=16.2.0 <16.3.6.
Исправлено: 16.3.6
Vue SSR: XSS через имена атрибутов
Ошибка в @vue/server-renderer позволяла внедрять дополнительные HTML-атрибуты при серверном рендеринге.
Ключевое условие: приложение использует v-bind="object", причём атакующий контролирует имена свойств объекта. Например, атрибуты приходят из CMS или конструктора форм. Обычной передачи недоверенного значения в заранее известный атрибут для этого недостаточно.
Затронуты: версии <3.5.42, а также 3.6.0-rc.0–rc.5.
Исправлено: 3.5.42 / 3.6.0-rc.6
Nuxt: кеш отдавал SSR-данные другого пользователя
При сочетании персонализированной SSR-страницы, routeRules с cache / swr / isr и извлечения payload данные первого пользователя могли попасть другому пользователю или неавторизованному посетителю
Утекали данные, загруженные через useFetch / useAsyncData. При этом HTML страницы мог оставаться корректно защищённым
Затронуты: Nuxt 4.4.0–4.5.0
Исправлено: 4.5.1. Nuxt 3 этой ошибкой не затронут
Astro: RCE при оптимизации AVIF
Уязвимость находилась в libheif, используемой стандартным обработчиком изображений на базе Sharp. Обработка специально подготовленного AVIF могла привести к выполнению кода.
Условие: атакующий должен суметь передать недоверенное изображение на обработку Astro
Затронут: astro <7.2.8
Исправлено: Astro 7.2.8, который требует Sharp 0.35.4