Next.js выпустил внеплановый патч для двух критических RCE-уязвимостей
14 октября команда Next.js выпустила внеплановое обновление безопасности, устранив две критические уязвимости, позволяющие неаутентифицированному злоумышленнику удалённо выполнять код, а также одну уязвимость высокой степени опасности, ведущую к отказу в обслуживании. Исправления вошли в версии 16.4.1 и 15.5.28 — актуальные выпуски с активной и поддерживаемой долгосрочной поддержкой.
Что исправлено
Обеим уязвимостям выполнения кода Vercel присвоила критический уровень с оценкой CVSS 9.5.
Первая кроется в React Server Components — механизме, который исполняет компоненты интерфейса на сервере. Проблема затрагивает «крайне редкие случаи», когда ответ передаёт несколько типизированных массивов и подконтрольное злоумышленнику значение. В приложении Next.js триггером служит функция use cache, возвращающая более одного типизированного массива, поэтому уязвимы лишь приложения на версии 16 с включённым механизмом Cache Components. Vercel рекомендует обновляться даже тем, у кого таких функций нет.
Вторая (CVE-2026-96889) — ошибка работы с памятью в библиотеке librsvg, которую Next.js использует через пакет sharp при обработке SVG. Выполнение кода возможно, когда Next.js работает на Linux с glibc. По умолчанию SVG не оптимизируются: для этого нужно включить настройку dangerouslyAllowSVG. Та же библиотека задействована в next/og — генераторе изображений для социальных превью.
Третья уязвимость приводит к отказу в обслуживании: в приложениях App Router хотя бы с одним Server Action специально составленные запросы способны загрузить процессор на 100% и парализовать обработку остальных запросов.
Что делать
Следует обновиться до 16.4.1 (для версии 16) или 15.5.28 (для версии 15), затем пересобрать и переразвернуть приложение. На версии 16 нужный sharp 0.35.5 подтянется автоматически, а вот на 15.5.28 по-прежнему допустим уязвимый sharp 0.34.x — его стоит проверить командой npm ls sharp и при необходимости обновить вручную.
Если немедленное обновление невозможно, для уязвимости в обработке изображений есть временное решение — обновить sharp или заблокировать рендеринг SVG вызовом sharp.block({ operation: ["VipsForeignLoadSvg"] }). Для уязвимостей в use cache и Server Actions обходных путей нет.
Почему изображения снова подводят
Это уже третий случай с августа, когда обработка изображений в Next.js порождает уязвимость выполнения кода: ранее подвели libheif при разборе AVIF и next/og при генерации SVG. На сей раз собственный код оптимизатора не менялся — проблему закрыли, подняв версию sharp до 0.35.5 с исправленной librsvg 2.63.2. Red Hat оценила исходную ошибку в 7,8 (требуется участие пользователя), тогда как Vercel оценила её применительно к Next.js в 9,5 и как доступную по сети.
Уязвимость в React Server Components располагается в тех же трёх пакетах, что и декабрьская React2Shell, но значительно уже по охвату. На 15 октября сведений об эксплуатации любой из трёх исправленных уязвимостей не поступало.
Источник: The Hacker News
Комментарии
Войдите, чтобы комментировать.