SvelteKit 2.x получил security-релиз: что закрыто в 2.70.4 и что осталось только в 3.x

5 ноября 2026 года команда Svelte выпустила SvelteKit 2.70.4 — security-релиз для ветки 2.x. В него перенесены пять исправлений, которые раньше были только в SvelteKit 3: SSRF, XSS в пререндеренных страницах, path traversal в vite preview на Windows и ещё две проблемы. Если проект остался на 2.x, обновитесь до 2.70.4 вместе с адаптерами.
Пауза между раскрытием и патчем для «двойки» вышла заметной. 21 октября NVD опубликовала четыре CVE для SvelteKit с формулировкой «исправлено в 3.0.0», и командам, не готовым к мажорному переходу, предлагалось фактически жить с открытыми дырами. Такие проекты чаще всего достаются по наследству — сайты и личные кабинеты, которые когда-то собрали в рамках frontend-разработки и с тех пор обновляли только по мере необходимости.
Ниже — что именно закрыто в 2.70.4, какие уязвимости по данным advisory остались исправлены только в 3.x и что сделать команде на этой неделе. Как выбор SSR, SPA или пререндера влияет на поверхность атаки, мы разбирали в статье о выборе модели рендеринга.
Что исправлено в SvelteKit 2.70.4
Все пять исправлений пакета @sveltejs/kit вошли в один пулл-реквест и перечислены в release notes. У каждого есть отдельный advisory в GitHub, где 2.70.4 указан как исправленная версия.
- SSRF через self-fetch (CVE-2026-114062). Серверный fallback для запросов к собственному приложению автоматически следовал HTTP-редиректам. Подменив заголовок Host или forwarded-заголовки, атакующий направлял запрос на свой сервер, а оттуда редиректом — во внутреннюю сеть. В NVD — 5.3 по CVSS 3.1 и 6.9 по CVSS 4.0.
- Path traversal в
vite previewна Windows (CVE-2026-114063). Затронуты версии с 2.10.0: preview-сервер позволял без авторизации читать файлы за пределами каталога пререндера — исходники, конфиги, учётные данные. Самая высокая оценка в пакете: 7.5 по CVSS 3.1 и 8.7 по CVSS 4.0. - XSS в пререндеренных страницах (CVE-2026-114061). Значение
cache-control, выставленное черезsetHeaders, без экранирования попадало в тег<meta http-equiv="cache-control">. Если на этапе пререндера значение контролирует внешний источник, в страницу можно внедрить скрипт. - Импорт модуля с чужого origin (GHSA-rqp5-r3wg-vg35). Pathname, начинающийся с
//, превращался в protocol-relative URL при серверном разрешении маршрута, и код мог загрузиться с другого домена. - Падение adapter-node на кривом пути (GHSA-mw6w-2fmv-pvw3). Если хук
rerouteпереписывал некорректный pathname, необработанныйURIErrorронял процесс. Теперь сервер отвечает 400.
В тот же день вышли патчи адаптеров: adapter-cloudflare 7.2.10 (пререндеренные пути больше не создают лишние правила в _redirects и _routes.json), adapter-vercel 6.3.5 и adapter-static 3.0.11 (пути больше не трактуются как регулярные выражения в конфиге маршрутов Vercel), adapter-node 5.5.8.
Что в ветке 2.x по-прежнему не закрыто
Это главный нюанс, который легко пропустить за словами «security-релиз». По данным advisory проекта, три проблемы исправлены только в SvelteKit 3:
- Open redirect в
use:enhance(CVE-2026-114060): маршруты, принимающие пути с//, могли увести пользователя после отправки формы на чужой сайт. Исправленная версия — 3.0.0. - DoS при разборе form data в remote functions (GHSA-3r8g-jcqq-3p5j, высокая критичность): затронуты версии с 2.42.0, исправление — только в 3.1.1.
- Коллизия приватных функций
query.batch(GHSA-6cf5-gc4q-fm3x): затронуты версии с 2.60.1, исправление — только в 3.1.1.
Если в проекте на 2.x используются use:enhance на catch-all маршрутах или remote functions, 2.70.4 снимает не весь риск. Для такой кодовой базы переход на 3.x — уже вопрос безопасности, а не только новых возможностей.
Что сделать команде на этой неделе
- Проверить версию:
npm ls @sveltejs/kit. Ветка 2.x — обновиться до 2.70.4; ветка 3.x — до 3.1.1 или новее. - Обновить адаптер вместе с ядром: исправления для Cloudflare, Vercel и static-сборок живут в пакетах адаптеров, а не в
@sveltejs/kit. - Убрать
vite previewиз любых окружений, доступных снаружи, — даже после патча это инструмент для локальной проверки, а не сервер для стенда. - Найти в коде
use:enhanceна маршрутах с rest-параметрами и вызовы remote functions — если они есть, запланировать переход на 3.x. - Пересобрать и передеплоить: на статических хостингах исправления применяются только после новой сборки.
Миграция на SvelteKit 3 затрагивает конфигурацию (она переехала в vite.config.ts), алиас $lib и требует Vite 8, поэтому её лучше делать плановой задачей с регрессом, а не хотфиксом.
Почему это касается не только Svelte
За неделю это второй крупный JS-фреймворк с пакетом исправлений сразу в двух ветках: 3 ноября аналогичный релиз выпустил Next.js. Для команд вывод общий: старая мажорная ветка фреймворка получает патчи с задержкой и не всегда целиком. Если продукт держится на 2.x «потому что работает», заложите в план либо регулярные обновления внутри ветки, либо дату перехода — и следите за advisory фреймворка так же, как за CVE в серверном ПО.
Часто задаваемые вопросы
Нужно ли обновляться, если сайт полностью статический? Да, если вы собираете его через adapter-static или adapter-cloudflare: часть исправлений касается генерации конфигов маршрутов и пререндера. Обновите пакеты и пересоберите сайт.
Опасна ли уязвимость в vite preview на Linux и macOS? По описанию CVE-2026-114063 проблема воспроизводится на Windows. Но держать preview-сервер открытым наружу не стоит на любой ОС.
Закрывает ли 2.70.4 все известные уязвимости? Нет. Open redirect в use:enhance, DoS в remote functions и коллизия query.batch по данным advisory исправлены только в ветке 3.x.
Какие версии считать безопасными? На момент публикации — @sveltejs/kit 2.70.4 для 2.x (с оговорками выше) и 3.1.1 для 3.x, плюс актуальные версии адаптеров.
Источники
- GitHub — sveltejs/kit, release @sveltejs/kit@2.70.4, 5 ноября 2026 (первоисточник).
- GitHub — Security advisories проекта sveltejs/kit, октябрь–ноябрь 2026.
- NIST NVD — CVE-2026-114063 и связанные CVE-2026-114060, CVE-2026-114061, CVE-2026-114062, 21 октября 2026.
Проверим фронтенд на уязвимые зависимости
Проведём аудит кода и зависимостей SvelteKit-проекта, закроем известные CVE, оценим объём перехода на SvelteKit 3 и составим план обновлений без остановки продукта.