Критические уязвимости в React и Next.js приводят к удаленному выполнению кода без аутентификации

В React обнаружили серьезную уязвимость CVE-2025-55182, получившую 10 баллов из 10 возможных по шкале CVSS. Она позволяет удаленно выполнить код на сервере без аутентификации. Проблема получила имя React2Shell и вызвала настоящую панику в индустрии, ведь под угрозой находятся миллионы ресурсов. React — опенсорсная библиотека компании Meta (деятельность компании признана экстремистской и запрещена в России), предназначенная для создания пользовательских интерфейсов. Ее используют такие гиганты индустрии, как Airbnb и Netflix, а основной npm-пакет насчитывает около 55,8 млн загрузок в неделю. Next.js — популярный фреймворк на базе React — отстает от этих показателей совсем ненамного и может похвастаться 16,7 млн еженедельных скачиваний. Обнаруженная уязвимость связана с обработкой данных, которые React получает через эндпоинты React Server Function. Злоумышленник может отправить специально сформированный HTTP-запрос на любой эндпоинт Server Function, и при десериализации React выполнит вредоносный JavaScript-код на сервере. При этом для атаки не нужна авторизация или привилегии. Изначально эту проблему обнаружил новозеландский ИБ-специалист Лаклан Дэвидсон (Lachlan Davidson), который 29 ноября уведомил о баге разработчиков Meta. В настоящее время исследователь запустил специальный сайт, посвященный React2Shell, где будут публиковаться технические детали. Как объясняют специалисты компании Endor Labs, React2Shell — это проблема логически небезопасной десериализация. Так, сервер не может корректно валидировать структуру входящих RSC-пейлоадов. Когда приходят искаженные данные от атакующего, валидация отказывает, что ведет к выполнению привилегированного JavaScript-кода в контексте сервера. Эксплуатировать React2Shell возможно с дефолтными настройками фреймворков, что делает стандартные развертывания уязвимыми без каких-либо особых условий. Как подчеркивают исследователи, для атаки не требуется никаких специальных настроек и прав — только сетевой доступ. CVE-2025-55182 затрагивает версии 19.0, 19.1.0, 19.1.1 и 19.2.0 следующих npm-пакетов: react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack. Разработчики React уже выпустили исправления в составе версий 19.0.1, 19.1.2 и 19.2.1. Кроме того, под удар попал и Next.js — популярный фреймворк для веб-разработки на базе React. Компания Vercel, стоящая за созданием Next.js, попыталась присвоить своей уязвимости отдельный идентификатор CVE-2025-66478, но NIST отклонил его как дубликат. В данном случае пострадали canary-релизы начиная с версии 14.3.0-canary.77, а также все релизы веток 15.x и 16.x ниже пропатченных версий. Исправления были выпущены для версий 16.0.7, 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9 и 15.0.5. Хуже того, специалисты предупреждают, что та же уязвимость, вероятно, присутствует и в других библиотеках с имплементациями React Server. В их число входят: Vite RSC plugin, Parcel RSC plugin, React Router RSC preview, RedwoodSDK и Waku.
Даже если ваше приложение не реализует эндпоинты React Server Function, оно все равно может быть уязвимо, если поддерживает React Server Components (RSC)», — предупреждают разработчики React в бюллетене безопасности.
По данным ИБ-компании Wiz, около 39% всех облачных сред содержат инстансы, уязвимые перед CVE-2025-55182 или CVE-2025-66478. Эксперт Palo Alto Networks Unit 42, Джастин Мур (Justin Moore) называет проблему React2Shell универсальным «мастер-ключом», который не ломает систему, а злоупотребляет ее доверием к входящим данным. По его словам, уже обнаружено более 968 000 серверов, использующих такие фреймворки, как React и Next.js. Учитывая масштаб проблемы, специалисты уверены, что массовая эксплуатация уязвимости, это не вопрос «если», а вопрос «когда». В настоящее время сообщений об эксплуатации React2Shell в реальных атаках не поступало. Однако менее чем за сутки после раскрытия информации о проблеме в сети появился как минимум один proof-of-concept эксплоит, и уязвимость была добавлена в различные в сканеры. Более того, Лаклан Дэвидсон предупредил о фейковых PoC, которые уже замечены в сети. Они используют функции типа vm#runInThisContext, child_process#exec и fs#writeFile, но исследователь объясняет, что настоящий эксплоит этого не требует. Такие PoC вообще не работают с Next.js, так как этих функций там нет. Реакция индустрии на информацию критическом баге не заставила себя ждать. Представители Cloudflare сообщают, что уже развернули защиту в своем облачном WAF и все клиенты автоматически защищены, пока трафик их React-приложений проксируется через сервис. Аналогичные действия предприняли специалисты AWS, Akamai, Fastly и Google Cloud. F5 заявила, что изучает потенциальное влияние бага на свою продукцию, но пока затронутые продукты не выявлены. До установки патчей рекомендуется развернуть WAF-правила, мониторить HTTP-трафик на Server Function endpoints на предмет подозрительных запросов и, если это возможно, временно ограничить сетевой доступ к затронутым приложениям. Организациям стоит провести аудит своих сред, чтобы определить, используют ли они уязвимые версии. Известный ИБ-исследователь Кевин Бомонт (Kevin Beaumont) попытался снизить градус всеобщей паники, отметив, что уязвимость ограничена свежей версией 19 и затрагивает только приложения, использующие относительно новую функциональность React Server. По оценке экспертов BI.ZONE, от 10 000 до 25 000 российских веб-ресурсов могут быть уязвимы перед React2Shell.
По нашим оценкам, новая критическая уязвимость ставит под удар от 10 000 до 25 000 российских веб-ресурсов, включая ресурсы малого бизнеса и сервисы подрядчиков. Пока нет надежного PoC, выявить потенциально уязвимые ресурсы можно с помощью механизма определения стека веб‑приложений в решениях класса EASM. Настоятельно рекомендуем обновить уязвимые компоненты как можно быстрее», — предупредили в компании.

Источник: https://xakep.ru/2025/12/05/react2shell/