Уязвимость максимальной степени опасности, получившая название React2Shell, в протоколе React Server Components (RSC) Flight позволяет удалённо выполнять код без аутентификации в приложениях React и Next.js.
Проблема безопасности связана с небезопасной десериализацией. Она получила оценку серьёзности 10/10 и была присвоена идентификаторы CVE-2025-55182 для React и CVE-2025-66478 (CVE отклонён в Национальной базе данных уязвимостей) для Next.js.
Исследователь в области безопасности Лахлан Дэвидсон обнаружил уязвимость и сообщил о ней в React 29 ноября. Он выяснил, что злоумышленник может добиться удалённого выполнения кода (RCE), отправив специально составленный HTTP-запрос на конечные точки серверных функций React.
«Даже если в вашем приложении нет конечных точек React Server Function, оно всё равно может быть уязвимым, если поддерживает React Server Components [RCS]», — предупреждает рекомендация по безопасности от React.
Следующие пакеты в конфигурации по умолчанию затронуты:
- react-server-dom-parcel
- react-server-dom-turbopack
- и react-server-dom-webpack
React — это библиотека JavaScript с открытым исходным кодом для создания пользовательских интерфейсов. Она поддерживается компанией Meta и широко используется организациями любого размера для фронтенд-разработки.
Next. js, поддерживаемый Vercel, — это фреймворк, созданный на основе React, который добавляет рендеринг на стороне сервера, маршрутизацию и конечные точки API.
Оба решения широко используются в облачных средах для создания фронтенд-приложений, которые помогают быстрее и проще масштабировать и развертывать архитектуры.
Исследователи из Wiz, занимающейся облачной безопасностью, предупреждают, что этой уязвимостью легко воспользоваться и что она присутствует в конфигурации по умолчанию для затронутых пакетов.
Последствия и исправления
По данным React, уязвимость присутствует в версиях 19.0, 19.1.0, 19.1.1 и 19.2.0. Next. js подвержен уязвимости в экспериментальных канареечных выпусках, начиная с 14.3.0-canary.77, а также во всех выпусках веток 15.x и 16.x ниже исправленных версий.
Ошибка существует в пакете ‘react-server’, используемом серверными компонентами React (RSC), но Next. js наследует её из-за реализации протокола RSC «Flight».
По данным исследователей Wiz, в 39% всех облачных сред, за которыми они наблюдают, есть экземпляры Next. js или React, работающие с версиями, уязвимыми для CVE-2025-55182, CVE-2025-66478 или обеими.
Такая же уязвимость, вероятно, существует и в других библиотеках, реализующих React Server, включая плагин Vite RSC, плагин Parcel RSC, предварительную версию React Router RSC, RedwoodSDK и Waku.
Компания Endor Labs, специализирующаяся на безопасности цепочки поставок программного обеспечения, объясняет, что React2Shell «представляет собой логически небезопасную уязвимость при десериализации, когда сервер не может должным образом проверить структуру входящих полезных данных RSC».
При получении искажённых данных от злоумышленника происходит сбой проверки, в результате чего в контексте сервера выполняется привилегированный код JavaScript.
Дэвидсон создал веб-сайт React2Shell, где он будет публиковать технические детали. Исследователь также предупреждает, что существуют эксплойты, подтверждающие концепцию (POCs), которые не являются подлинными.
Эти PoC вызывают такие функции, как vm#runInThisContext, child_process#exec и fs#writeFile, но настоящему эксплойту это не нужно, говорит исследователь.
«Это можно было бы использовать только в том случае, если бы вы сознательно разрешили клиентам вызывать эти функции, что было бы опасно в любом случае», — отмечает Дэвидсон.
Далее он объяснил, что эти поддельные PoC не будут работать с Next. js, поскольку эти функции отсутствуют из-за того, что список серверных функций управляется автоматически.
Разработчикам настоятельно рекомендуется использовать исправления, доступные в версиях React 19.0.1, 19.1.2 и 19.2.1, а также в версиях Next. js 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 и 16.0.7.
Организациям следует провести аудит своей среды, чтобы определить, используют ли они уязвимую версию, и принять соответствующие меры для снижения рисков.
Популярность этих двух решений отражается в количестве еженедельных загрузок: у React 55,8 миллиона загрузок в Node Package Manager (NPM), а у Next. js 16,7 миллиона загрузок на той же платформе.