React2Shell (CVE-2025-55182): критическая уязвимость в React и Next.js с удаленным выполнением кода

CyberSecureFox 🦊

В экосистеме React выявлена критическая уязвимость CVE-2025-55182, получившая максимальную оценку 10/10 по шкале CVSS. Недочет, получивший неофициальное название React2Shell, позволяет удаленно выполнить произвольный код на сервере без какой-либо аутентификации. С учетом того, что React и основанные на нем фреймворки используются миллионами веб-приложений по всему миру, риск носит системный характер.

Что такое React2Shell и почему уязвимость так опасна

React — это опенсорс‑библиотека компании Meta (признана экстремистской и запрещена в РФ), применяемая для разработки пользовательских интерфейсов. Ее используют крупные онлайн‑сервисы вроде Airbnb и Netflix; базовый npm‑пакет React загружается около 55,8 млн раз в неделю. Популярный фреймворк Next.js, построенный на React, демонстрирует сопоставимые масштабы распространения — порядка 16,7 млн скачиваний еженедельно.

Уязвимость React2Shell связана с тем, как React обрабатывает данные, поступающие через эндпоинты React Server Function в контексте React Server Components (RSC). Злоумышленнику достаточно отправить специально сформированный HTTP‑запрос на любой доступный извне серверный эндпоинт. На этапе десериализации некорректно проверяемый RSC‑пейлоад приводит к выполнению произвольного JavaScript‑кода на стороне сервера.

Ключевой момент: для эксплуатации не требуются учетные данные или повышенные привилегии. Достаточно сетевого доступа до уязвимого приложения, что делает уязвимость особенно привлекательной для массовых атак и автоматизированных сканеров.

Техническая природа уязвимости: логически небезопасная десериализация

По оценке исследователей Endor Labs, React2Shell представляет собой пример логически небезопасной десериализации. Серверная часть React не способна должным образом валидировать структуру входящего RSC‑потока. Если атакующий подменяет или искажает формат данных, механизм проверки «ломается», и платформа некорректно интерпретирует переданный полезный нагруз (payload) как доверенный JavaScript‑код.

Отдельно подчеркивается, что уязвимость эксплуатируема на стандартных настройках фреймворков. То есть речь идет не о специфических конфигурациях, а о типичных «из коробки» развертываниях, где администраторы могли даже не включать дополнительные экспериментальные функции.

Затронутые пакеты и версии React

По данным разработчиков, CVE-2025-55182 влияет на следующие npm‑пакеты:

Уязвимые пакеты и версии:

react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack — версии 19.0, 19.1.0, 19.1.1 и 19.2.0.

Исправленные версии:

React‑разработчики оперативно выпустили патчи, закрывающие уязвимость в версиях 19.0.1, 19.1.2 и 19.2.1. Обновление до этих релизов — базовое требование для всех, кто использует React Server Components.

Next.js и другие фреймворки на базе React

Под удар попал и Next.js — один из наиболее распространенных фреймворков для веб‑разработки на базе React. Компания Vercel пыталась зарегистрировать отдельную уязвимость под идентификатором CVE-2025-66478, однако NIST классифицировал ее как дубликат исходной CVE-2025-55182.

Уязвимые линейки Next.js:

— canary‑релизы, начиная с 14.3.0-canary.77;
— все релизы веток 15.x и 16.x до выходов пропатченных версий.

Патчи Next.js были выпущены для версий: 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 отдельно предупреждают, что приложение может оставаться уязвимым, даже если явно не использует React Server Function endpoints, но включает поддержку RSC.

Масштаб проблемы и первые PoC‑эксплойты

По оценке компании Wiz, около 39% всех облачных сред содержат инстансы, подверженные CVE-2025-55182 или дублируемой CVE-2025-66478. Эксперт Unit 42 (Palo Alto Networks) Джастин Мур охарактеризовал React2Shell как «универсальный мастер‑ключ», который не взламывает систему напрямую, а злоупотребляет ее доверием к входящим данным. Уже выявлено более 968 000 серверов, работающих на React, Next.js и схожих стэках.

Менее чем через сутки после публичного раскрытия информации появился как минимум один proof-of-concept (PoC) эксплойт, а уязвимость была оперативно добавлена в различные сканеры безопасности. Одновременно исследователь Лаклан Дэвидсон, обнаруживший проблему и раскрывший ее разработчикам 29 ноября, сообщил о появлении фальшивых PoC, использующих функции вроде vm#runInThisContext, child_process#exec и fs#writeFile. По его словам, такие демо‑эксплойты не отражают реальный вектор атаки и, в частности, вовсе не работают против Next.js из‑за отсутствия этих функций в целевой среде.

Реакция индустрии и рекомендации по защите

Крупные облачные провайдеры уже внедрили первичные меры защиты. Cloudflare заявила о развертывании сигнатур в своем WAF, автоматически защищающих клиентов при проксировании трафика React‑приложений. Аналогичные шаги предприняли AWS, Akamai, Fastly и Google Cloud. Компания F5 сообщила, что анализирует потенциальное влияние уязвимости на собственные продукты.

Пока патчи не установлены, экспертное сообщество рекомендует:

— разворачивать WAF‑правила для фильтрации подозрительных RSC‑запросов;
мониторить HTTP‑трафик к Server Function endpoints на предмет аномалий;
— по возможности временно ограничить сетевой доступ к уязвимым сервисам;
— провести аудит технологического стека (включая EASM‑решения) для выявления приложений, использующих React Server Components и уязвимые версии библиотек.

Известный исследователь Кевин Бомонт обращает внимание, что уязвимость затрагивает именно линейку React 19 и только приложения, использующие относительно новую функциональность React Server, что несколько сужает потенциальный круг жертв по сравнению с начальным восприятием «глобального» бага.

По оценкам BI.ZONE, в зоне риска находятся от 10 000 до 25 000 российских веб‑ресурсов, включая сайты малого бизнеса и сервисы подрядчиков: «Настоятельно рекомендуем обновить уязвимые компоненты как можно быстрее».

Ситуация вокруг React2Shell демонстрирует, насколько уязвимы современные веб‑приложения, зависящие от сложных серверных рантаймов и автоматической десериализации данных. Организациям, использующим React, Next.js и другие RSC‑совместимые решения, стоит в кратчайшие сроки: обновить уязвимые пакеты, включить дополнительный мониторинг RSC‑трафика, актуализировать WAF‑правила и пересмотреть практики безопасной разработки. Чем раньше будут внедрены патчи и компенсирующие меры, тем ниже вероятность, что очередная волна массовых атак по CVE-2025-55182 пройдет именно через ваши приложения.

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.