Уязвимость удалённого выполнения кода CVSS 10.0 без аутентификации в React Server Components — эксплуатируется государственными хакерскими группами через несколько часов после раскрытия. Всё, что нужно знать для оценки, исправления и защиты ваших приложений.
Если вы используете React 19.0.0–19.2.0 с Server Components или Next.js 15.x/16.x с App Router, ваше приложение уязвимо для удалённого выполнения кода без аутентификации. Установите патч немедленно. Хакерские группы активно сканируют и эксплуатируют эту уязвимость.
3 декабря 2025 года команда React раскрыла CVE-2025-55182 — критическую уязвимость удалённого выполнения кода (RCE) без аутентификации в React Server Components (RSC). Оценка CVSS 10.0 — максимально возможный уровень критичности. Уязвимость получила неофициальное название "React2Shell".
Уязвимость была обнаружена исследователем безопасности Лахланом Дэвидсоном (Lachlan Davidson) и ответственно раскрыта команде React 29 ноября 2025 года. Координированное раскрытие информации включало Vercel, Meta (Facebook) и крупных облачных провайдеров, включая AWS, что позволило установить защитные меры до публичного объявления.
CVE-2025-66478 был первоначально выделен как отдельный идентификатор, но впоследствии отклонён как дубликат CVE-2025-55182. Отдельной уязвимости не существует.
Ключевой факт: Уязвимость React Server Components позволяет удалённому
атакующему выполнить произвольный код на сервере без какой-либо аутентификации.
Вектор CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H — сетевой доступ,
низкая сложность, без привилегий, без взаимодействия с пользователем, полная компрометация
конфиденциальности, целостности и доступности.
React Server Functions позволяют клиентскому компоненту вызывать функцию, выполняющуюся на сервере. React предоставляет интеграционные точки, которые фреймворки и сборщики используют для связи клиентского и серверного кода. Когда клиент вызывает Server Function, React преобразует запрос в HTTP POST-запрос к серверному endpoint. На сервере React десериализует входящие данные и преобразует их в вызов функции, возвращая результат клиенту.
Уязвимость заключается в том, как React декодирует и десериализует данные, отправленные на endpoints Server Function. Процесс десериализации не проверяет и не санитизирует входящие данные, позволяя атакующему отправить специально сформированный HTTP-запрос, который при обработке десериализатором React приводит к выполнению произвольного кода на сервере.
// Упрощённая схема эксплуатации (концептуально)
// 1. Атакующий отправляет поддельный HTTP POST на /server-function-endpoint
// 2. Десериализатор React обрабатывает вредоносные данные
// 3. Небезопасная десериализация запускает выполнение произвольного кода
// 4. Атакующий получает доступ к серверу — отсюда "React2Shell"
POST /_rsc/server-functions HTTP/1.1
Host: vulnerable-app.com
Content-Type: application/octet-stream
[вРеДоносные данные с встроенными сериализованными командами]
Важно: даже если ваше приложение не реализует явно endpoints Server Function, оно
всё равно может быть уязвимо, если поддерживает React Server Components.
Endpoint Server Function автоматически регистрируется инфраструктурой RSC, а код
десериализации является частью основных пакетов react-server-dom-*.
Следующие пакеты React 19.0.0–19.2.0 уязвимы:
Любой фреймворк, который зависит от уязвимых пакетов React, включает их как peer-зависимости или встраивает их:
| CVE ID | Тип | CVSS | Дата | Описание |
|---|---|---|---|---|
| CVE-2025-55182 | RCE | 10.0 | 3 дек 2025 | RCE без аутентификации через небезопасную десериализацию в RSC |
| CVE-2025-66478 | — | — | 3 дек 2025 | ОТКЛОНЁН — дубликат CVE-2025-55182 |
| CVE-2025-55184 | DoS | 7.5 | 3 дек 2025 | Отказ в обслуживании в React Server Components |
| CVE-2025-67779 | DoS | 7.5 | 3 дек 2025 | Дополнительный вектор DoS в React Server Components |
| CVE-2025-55183 | Утечка | 5.3 | 3 дек 2025 | Раскрытие исходного кода через React Server Components |
| CVE-2026-23864 | DoS | 7.5 | 26 янв 2026 | Дополнительная DoS-уязвимость в React Server Components |
В течение нескольких часов после публичного раскрытия 3 декабря 2025 года AWS зафиксировала активные попытки эксплуатации CVE-2025-55182. Были замечены множественные кибергруппы, связанные с Китаем:
AWS отслеживала эксплуатацию через инфраструктуру MadPot (система honeypot-ловушек) и развернула автоматическую защиту через систему активной обороны Sonaris и управляемые правила AWS WAF (AWSManagedRulesKnownBadInputsRuleSet версии 1.24+).
Каталог CISA Known Exploited Vulnerabilities содержит CVE-2025-55182, подтверждая, что это активно эксплуатируемая уязвимость, требующая немедленного исправления.
Скорость эксплуатации значительна: Государственные группы, использующие zero-day эксплойт в течение часов после раскрытия, требуют предварительной подготовки. Это предполагает, что злоумышленники либо обратно разработали исправление до публичного объявления, либо независимо обнаружили уязвимость и ждали раскрытия для массового сканирования.
Сценарий эксплуатации React2Shell следует предсказуемой схеме:
/_rsc/ и
/server-functions.Обновитесь до исправленной версии в соответствии с вашей текущей минорной версией:
# Если вы на React 19.0.x
npm install [email protected] [email protected]
# Если вы на React 19.1.x
npm install [email protected] [email protected]
# Если вы на React 19.2.x
npm install [email protected] [email protected]
Если вы используете Next.js с App Router, обновитесь до исправленной версии:
# Пользователи Next.js 14.x (включая миграцию с 13.x)
npm install [email protected]
# Пользователи Next.js 15.x
npm install [email protected] # Последняя версия 15.x
# Или выберите точную версию:
npm install [email protected] # Для 15.0.x
npm install [email protected] # Для 15.1.x
npm install [email protected] # Для 15.2.x
npm install [email protected] # Для 15.3.x
npm install [email protected] # Для 15.4.x
npm install [email protected] # Для 15.5.x
# Пользователи Next.js 16.x
npm install [email protected]
npm install [email protected]
После обновления проверьте версию React:
# Проверьте версию React
npm ls react react-dom
# Проверьте версию react-server-dom-webpack
npm ls react-server-dom-webpack
# Исправленные версии:
# - react: 19.0.1, 19.1.2 или 19.2.1
# - react-server-dom-*: те же версии, что и react
Если вы не можете установить патч немедленно, используйте WAF для блокировки известных паттернов эксплуатации:
/_rsc/* и Server Function endpoints
на публичных балансировщиках (однако это может нарушить легитимную функциональность)Временные защиты хостинг-провайдеров и WAF-правила обеспечивают временную защиту и не должны использоваться как постоянное решение. Единственное полное исправление — установка исправленных версий React. Атакующие постоянно адаптируют свои эксплойты для обхода WAF.
После установки патча проведите проверку безопасности:
По заявлению AWS, эта уязвимость не затрагивает сами сервисы AWS. Однако клиенты, запускающие React или Next.js в своих средах — будь то Amazon EC2, контейнеры (ECS/EKS) или serverless-платформы — должны обновить свои приложения немедленно.
AWS развернула многоуровневую автоматическую защиту через систему Sonaris, управляемые правила AWS WAF и периметральные средства контроля безопасности, но эти меры защищают инфраструктуру AWS — они не защищают самостоятельно управляемые приложения клиентов.
После первоначального раскрытия RCE команда React обнаружила и исправила несколько связанных уязвимостей в тех же пакетах. Все они устраняются обновлением до React 19.0.1, 19.1.2 или 19.2.1:
Обнаружение этих дополнительных уязвимостей в течение нескольких месяцев подчёркивает сложность поверхности атаки React Server Components. Организациям, использующим React RSC, следует поддерживать регулярный цикл установки патчей.
Инцидент React2Shell подчёркивает несколько важных уроков:
CVE-2025-55182 (React2Shell) — одна из самых серьёзных уязвимостей, когда-либо обнаруженных в экосистеме React. CVSS 10.0, RCE без аутентификации, эксплуатация государственными группами в течение часов после раскрытия — всё это требует немедленного внимания от каждой организации, использующей React Server Components в продакшене.
Хорошая новость в том, что исправление простое: обновление до React 19.0.1, 19.1.2 или 19.2.1. Пакеты react-server-dom-* и все затронутые фреймворки (Next.js, React Router, Waku и другие) исправлены. Команда React ответственно провела раскрытие, AWS развернула защитные меры, а уязвимость хорошо документирована.
Главный урок — уязвимости серверной десериализации остаются критическим классом проблем безопасности, а растущее внедрение серверных компонентов в современных JavaScript-фреймворках расширяет поверхность атаки способами, которые многие команды разработки ещё не полностью осознали.
Я создаю продакшен-приложения на современных инструментах — React, Next.js, Node.js и TypeScript. Обсудим ваш проект.