React Server Components: CVE-2025-55182 и защита от RCE в production
-

CVE-2025-55182 - это критическая дыра в React Server Components, которая позволяет запустить произвольный код на сервере без авторизации. Уязвимость бьет по react-server-dom пакетам версий 19.0.0-19.2.0 и фреймворкам вроде Next.js 15.x/16.x. Пэтч вышел 3 декабря 2025, но в проде еще полно уязвимых инстансов - до 39% по сканам.
Зачем разбирать? Чтобы быстро проверить свой стек, понять механику и защитить API от RCE. Это не просто баг, а логическая проблема десериализации в RSC Flight протоколе, которая превращает обычный POST в shell. Пройдем по патчу, уязвимым версиям и шагам для production hardening.
Механика уязвимости: RSC Flight и десериализация
RSC Flight - это протокол для передачи компонентов и server actions между сервером и клиентом. Сервер десериализует входящий payload, но в уязвимых версиях нет строгой валидации. Атакующий шлет crafted HTTP POST на endpoint с Server Functions, и бум - prototype pollution через proto приводит к RCE. Никаких creds не нужно, один запрос - и сервер твой.
Пример: клиент шлет чанк с вредоносным референсом, React его резолвит неправильно, requireModule подхватывает и исполняет код. Это не memory corruption, а логический фейл - сервер трактует данные как инструкции. В Next.js App Router это бьет по всем роутам с server components. Масштаб огромный: React 19, Next.js 15/16, даже Parcel/Vite плагины под ударом.
- Ключевые шаги атаки:
- Крафт payload с манипуляцией chunk references.
- POST на /_rsc endpoint (или аналог в твоем фреймворке).
- Десериализация вызывает requireModule с attacker-controlled модулем.
- Почему критично (CVSS 10.0): pre-auth, remote, full code exec.
Свойство Описание Протокол RSC Flight (chunked serialization) Триггер Deserialization Server Actions Вектор HTTP POST без auth Последствия RCE, data breach, ransomware Затронутые пакеты и фреймворки
Уязвимость сидит в react-server-dom-webpack/parcel/turbopack версий 19.0.0, 19.1.0, 19.1.1, 19.2.0. Это базовые либы для SSR в React 19. Next.js 15.x/16.x (App Router) и canary от 14.3.0-canary.77 наследуют баг напрямую. Другие: React Router RSC, Waku, RedwoodSDK, Vite/Parcel RSC plugins - все, что бандлит эти пакеты.
Проверь package.json: если react-server-dom-* в 19.0-19.2.0 без патча - срочно апдейт. В cloud (GKE, Cloud Run) уязвимые образы висят в 39% окружений по телеметрии. Expo и мобильные тоже под вопросом, если юзают RSC. Патч - 19.0.1, 19.1.2, 19.2.1 для либ, плюс Next.js обновы.
- Патченные версии:
- react-server-dom-webpack@19.0.1+.
- Next.js@15.x/16.x с фиксом (проверь changelog).
- npm audit или yarn upgrade-interactive.
- Дополнительно: disable Server Functions временно, если пэтч не сразу.
Пакет Уязвимые версии Патч react-server-dom-webpack 19.0.0-19.2.0 19.0.1+ Next.js 15.x, 16.x latest Vite RSC plugin bundling vuln pkgs update deps Патчинг и hardening в production
Первый шаг - inventory: grep docker images, npm ls в CI/CD. Апгрейдь deps: npm update react-server-dom-webpack@latest. В Next.js - npx next@latest. Redeploy приоритетно public-facing сервисы. Если Kubernetes - обнови images в GKE/eks, ротацию pods.
Дальше WAF: правила на блок crafted payloads с proto или подозрительными chunk refs. Azure WAF, Cloud Armor - кастом рулс на /_rsc пути. Мониторинг: логи на десериализацию errors, alerts от Defender. Временно disable RSC endpoints через env vars. Тестируй в staging: curl с PoC payload из GitHub (dwisiswant0/CVE-2025-55182).
- Checklist для продa:
- Audit deps: npm audit --production.
- WAF рулс: block payloads с ‘R:’ prefix или oversized chunks.
- Rotate secrets post-patch - на всякий.
- MDVM сканы для coverage.
Решение Время Эффективность Пэтч deps 1-2ч 100% WAF rules 30мин 90% (compensating) Disable RSC 5мин Полная изоляция Защита на уровне стека: что дальше
Пэтч решает CVE-2025-55182, но RSC архитектура все равно требует paranoia. Думай о strict payload validation в кастом handlers - не полагайся на фреймворк blindly. Интегрируй schema validation (Zod/Yup) перед десериализацией Server Actions. В проде - rate limiting на RSC endpoints, CSP для client payloads.
Масштаб экспозишена показывает: 39% cloud инстансов уязвимы, так что inventory - must have. Следующий шаг - audit всех serverless (Cloud Run, Vercel) на бандлы с vuln pkgs. Остается прототипировать custom RSC guards, если фичи критичны. Это эволюция - от client-side к secure-by-default серверу.
- Ключевые шаги атаки:
Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.
Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.
С вашими комментариями этот пост мог бы стать ещё лучше 💗
Зарегистрироваться Войти© 2024 - 2026 ExLends, Inc. Все права защищены.