Обнаружена критическая уязвимость в серверных компонентах React, позволяющая выполнять произвольный код на сервере
Уязвимость CVE-2025-55182 в экспериментальных серверных компонентах фреймворка затрагивает версии 19.0.0 — 19.2.0 и связана с небезопасной десериализацией, позволяющей через HTTP-запрос запускать команды ОС или модифицировать файлы без аутентификации.
В реализации серверных компонентов (React Server Components, RSC) фреймворка React обнаружена критическая уязвимость CVE-2025-55182, связанная с недостатками десериализации данных. Проблема позволяет злоумышленнику выполнять произвольный код на сервере путем отправки специально сформированного HTTP-запроса к уязвимому обработчику, без необходимости прохождения аутентификации.
Уязвимость затрагивает экспериментальные компоненты react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack в версиях React 19.0.0, 19.1.0, 19.1.1 и 19.2.0. Исправления выпущены в обновлениях 19.0.1, 19.1.2 и 19.2.1. Проблема также распространяется на популярные пакеты и фреймворки, использующие уязвимые компоненты, включая:
  • React Router (20 миллионов загрузок в неделю) — при активации экспериментального режима RSC
  • Waku, плагины Parcel и Vite для RSC
  • RedwoodSDK
  • Next.js — через отдельную, но аналогичную уязвимость CVE-2025-66478

Техническая причина уязвимости заключалась в отсутствии проверки hasOwnProperty при обращении к свойствам объекта во время десериализации, что позволяло подменить прототип и получить доступ к встроенным модулям Node.js, таким как child_process, vm и fs.

Это открывало возможность для:
  • Выполнения произвольных команд операционной системы через child_process.execSync
  • Запуска JavaScript-кода в контексте процесса сервера с помощью vm.runInThisContext
  • Чтения и записи файлов на сервере через fs.readFileSync и fs.writeFileSync

На GitHub уже опубликован рабочий прототип эксплоита, демонстрирующий выполнение команд, вычисление JavaScript-выражений и чтение системных файлов через простые POST-запросы.

Масштаб потенциального воздействия оценивается неоднозначно. С одной стороны, React используется примерно на 6% всех веб-сайтов, а исследование Wiz Research показало наличие уязвимых экземпляров Next.js или React в 39% проанализированных облачных сред. С другой стороны, серверные компоненты являются экспериментальной и не самой распространенной функцией; большинство React-приложений выполняют рендеринг исключительно на стороне клиента. Непосредственные уязвимые пакеты имеют относительно скромное количество еженедельных загрузок (от 7 до 670 тысяч) на фоне 45 миллионов загрузок основного пакета React.

Рекомендуемые действия для администраторов:
  1. Немедленное обновление React до версий 19.0.1, 19.1.2 или 19.2.1.
  2. Обновление Next.js до исправленных версий 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 или 16.0.7.
Проверка окружений на использование уязвимых экспериментальных серверных компонентов, даже если основное приложение их не задействует.
© 05.12.2025
Контакты:
info@smartinfra.ru
105118, г. Москва,
ул. Буракова, 27 к3,
3 этаж, офис 322

© 2025