- Обнаружена критическая уязвимость CVE-2025-55182 в серверных компонентах React версий 19.0.0, 19.1.0, 19.1.1 и 19.2.0, позволяющая выполнить произвольный код на сервере.
- Уязвимость связана с небезопасной десериализацией данных и затрагивает экспериментальные пакеты react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack.
- Исправления выпущены в обновлениях React 19.0.1, 19.1.2 и 19.2.1, а также выявлена аналогичная уязвимость в Next.js, требующая срочного обновления.
В серверных компонентах популярного web-фреймворка React были выявлены серьёзные проблемы с безопасностью, способные привести к выполнению произвольного кода на сервере. Уязвимость CVE-2025-55182 присутствовала в версиях 19.0.0, 19.1.0, 19.1.1 и 19.2.0 и затрагивала экспериментальные пакеты react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack, применяемые для рендеринга элементов интерфейса на стороне сервера, что отличает их от классических клиентских компонентов.
Проблема была связана с небезопасной десериализацией данных, получаемых через HTTP-запросы к серверным обработчикам. Ошибка в реализации функции requireModule допускала подстановку прототипа объекта, позволяя злоумышленнику запускать команды через системные вызовы и исполнять произвольный JavaScript-код с обходом стандартной песочницы. Такие возможности включают выполнение команд через child_process.execSync, запуск кода в контексте виртуальной машины Node.js и операции с файловой системой, что теоретически даёт злоумышленнику контроль над сервером.
Отметим, что для успешной эксплуатации уязвимости не требуется прохождение аутентификации, что значительно повышает риски для систем, использующих указанные экспериментальные серверные компоненты React.
Исправления проблемы были оперативно внедрены разработчиками React в минорных обновлениях 19.0.1, 19.1.2 и 19.2.1. В частности, патч сводился к изменению механизма доступа к модулям с использованием жёсткой проверки наличия свойств через метод hasOwnProperty, тем самым исключая возможность подстановки прототипа и предотвращая эксплуатацию уязвимости.
Данные уязвимые компоненты также интегрированы в другие популярные пакеты и фреймворки, среди которых react-router, waku, @parcel/rsc, @vitejs/plugin-rsc и rwsdk. В React Router опасность проявляется при использовании экспериментального режима React Server Components.
Степень распространённости и реального воздействия уязвимости оценивается достаточно неоднозначно: с одной стороны, React используется примерно на 6% веб-сайтов, а уязвимые пакеты имеют значительное количество загрузок, с другой стороны – серверные компоненты RSC остаются экспериментальными и применяются не так широко, как классические клиентоориентированные компоненты. По данным компании Wiz Research, уязвимые экземпляры Next.js и React выявлены на 39% проанализированных облачных платформ.
Также следует отметить близкую по сути уязвимость CVE-2025-66478, обнаруженную во фреймворке Next.js, который использует реализацию React Server Components. Проблема затрагивает версии 15.x и 16.x Next.js и проявляется даже при стандартной конфигурации приложений, созданных с помощью create-next-app. Для этого пакета также выпущены обновления, рекомендованные к немедленной установке.
В итоге владельцам и администраторам web-приложений на базе React и Next.js крайне рекомендуется проверить версии установленных пакетов и незамедлительно обновить их до последних исправленных релизов во избежание потенциальных атак и компрометации серверов.
