В популярном фреймворке Next.js, основанном на библиотеке React, была обнаружена и исправлена критическая уязвимость. Проблема, получившая идентификатор CVE-2025-29927, позволяла злоумышленникам обходить механизмы авторизации, что создавало серьезные риски для множества веб-приложений по всему миру. Команда разработчиков оперативно выпустила обновления безопасности.
Суть уязвимости: обход Middleware
Проблема заключалась в некорректной обработке HTTP-заголовков в компоненте Middleware, который в Next.js часто используется для реализации проверок безопасности, например, аутентификации и авторизации пользователей. Злоумышленник мог отправить на сервер специально сформированный запрос с заголовком `x-middleware-subrequest`, который система ошибочно воспринимала как внутренний запрос. Это позволяло полностью обойти все проверки, реализованные на уровне Middleware, и получить несанкционированный доступ к защищенным разделам приложения, таким как административные панели или личные кабинеты пользователей.
Уязвимость затрагивала только приложения, размещенные на собственных серверах (self-hosted) и использующие `next start`. Проекты, развернутые на платформах Vercel и Netlify, а также статические сайты, не были подвержены этой угрозе. Уязвимости был присвоен высокий уровень критичности с оценкой 9.1 из 10 по шкале CVSS.
Рекомендации и исправления
Разработчики Vercel, компании, стоящей за Next.js, оперативно выпустили патчи, устраняющие данную проблему. Всем пользователям настоятельно рекомендуется обновиться до безопасных версий.
- Для версии 12.x: обновиться до 12.3.5 или выше
- Для версии 13.x: обновиться до 13.5.9 или выше
- Для версии 14.x: обновиться до 14.2.25 или выше
В случае, если немедленное обновление невозможно, в качестве временной меры рекомендуется настроить веб-сервер или файрвол для блокировки всех входящих запросов, содержащих заголовок `x-middleware-subrequest`. Эта мера поможет предотвратить эксплуатацию уязвимости до момента установки официального обновления.
Данный инцидент подчеркивает важность своевременного обновления программного обеспечения и использования многоуровневых систем защиты. Разработчикам следует не только полагаться на Middleware для контроля доступа, но и внедрять дополнительные проверки непосредственно в логике защищаемых страниц и API-маршрутов.