Уязвимость затрагивает экспериментальные компоненты 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.
Рекомендуемые действия для администраторов:
- Немедленное обновление 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.
Проверка окружений на использование уязвимых экспериментальных серверных компонентов, даже если основное приложение их не задействует.