Next.js выпустил внеплановый патч для двух критических RCE-уязвимостей

· Безопасность
14 октября Vercel закрыла две критические уязвимости удалённого выполнения кода — в React Server Components и в библиотеке librsvg — а также уязвимость, приводящую к отказу в обслуживании.

cover.svg

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

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.