В компонентите на сървърната част на уеб-фреймворка 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-код в контекста на текущия процес (с заобикаляне на песъчник-изолация). Също така е възможно да се използват обработчици „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 е един от най-популярните уеб-фреймворкове (използва се на около 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 (стандартното приложение, създадено с инструментa 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
