CVE-2025-55182: критическая RCE в React Server Components
Анализ безопасности · 13 июня 2026

CVE-2025-55182: критическая RCE в React Server Components
React2Shell — эксплуатация, влияние и защита

Уязвимость удалённого выполнения кода CVSS 10.0 без аутентификации в React Server Components — эксплуатируется государственными хакерскими группами через несколько часов после раскрытия. Всё, что нужно знать для оценки, исправления и защиты ваших приложений.

Олег Максимов 13 июня 2026 12 мин чтения

⚠ КРИТИЧЕСКИ ВАЖНО — необходимы немедленные действия

Если вы используете 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

Следующие пакеты React 19.0.0–19.2.0 уязвимы:

Затронутые фреймворки

Любой фреймворк, который зависит от уязвимых пакетов React, включает их как peer-зависимости или встраивает их:

Хронология CVE

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 следует предсказуемой схеме:

  1. Сканирование: Атакующие сканируют интернет на предмет приложений Next.js и React с RSC-endpoint. Типичные индикаторы: /_rsc/ и /server-functions.
  2. Определение версии: Злоумышленник определяет версию React по известным файлам, заголовкам ответов или сообщениям об ошибках, специфичным для React 19.x.
  3. Вредоносная нагрузка: Атакующий отправляет поддельный HTTP POST на Server Function endpoint с данными, вызывающими выполнение кода.
  4. Доступ к серверу: После получения доступа атакующий обычно развёртывает веб-шелл, закрепляется в системе, похищает данные или использует скомпрометированный сервер для дальнейшего продвижения.

Шаги по исправлению

1. Немедленно обновите React

Обновитесь до исправленной версии в соответствии с вашей текущей минорной версией:

# Если вы на 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]

2. Обновите Next.js

Если вы используете 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]

3. Проверьте исправление

После обновления проверьте версию 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

4. Временные меры WAF

Если вы не можете установить патч немедленно, используйте WAF для блокировки известных паттернов эксплуатации:

⚠ Предупреждение: WAF не заменяет патч

Временные защиты хостинг-провайдеров и WAF-правила обеспечивают временную защиту и не должны использоваться как постоянное решение. Единственное полное исправление — установка исправленных версий React. Атакующие постоянно адаптируют свои эксплойты для обхода WAF.

5. Аудит безопасности после исправления

После установки патча проведите проверку безопасности:

Затрагивает ли это AWS-сервисы?

По заявлению 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 подчёркивает несколько важных уроков:

FAQ

Что такое CVE-2025-55182 (React2Shell)?
CVE-2025-55182, также известная как React2Shell — это критическая уязвимость удалённого выполнения кода (RCE) без аутентификации в React Server Components. Она имеет оценку CVSS 10.0 (максимальная степень опасности). Уязвимость вызвана небезопасной десериализацией данных, отправляемых на endpoints Server Function React.
Какие версии React затронуты?
Затронуты React версии 19.0.0, 19.1.0, 19.1.1 и 19.2.0. Уязвимые пакеты: react-server-dom-webpack, react-server-dom-parcel и react-server-dom-turbopack. Любое приложение с поддержкой Server Components уязвимо — даже без явной реализации Server Function.
Какие фреймворки затронуты?
Next.js (15.x и 16.x с App Router), React Router, Waku, @parcel/rsc, @vitejs/plugin-rsc и rwsdk. Пользователям Next.js на 14.x следует обновиться до 14.2.35; на 15.x — до 15.0.8–15.5.10.
Эксплуатировалась ли уязвимость в реальных атаках?
Да. В течение нескольких часов после публичного раскрытия 3 декабря 2025 года AWS зафиксировала активные попытки эксплуатации китайскими группами Earth Lamia и Jackpot Panda. CISA добавила уязвимость в каталог активно эксплуатируемых уязвимостей.
Как исправить CVE-2025-55182?
Обновите React до 19.0.1, 19.1.2 или 19.2.1. Для Next.js обновитесь до 14.2.35 (14.x) или 15.0.8–15.5.10 (15.x). Не полагайтесь на временные защиты — установите патч немедленно.
Что такое CVE-2025-66478?
CVE-2025-66478 отклонён (REJECTED). Это дубликат CVE-2025-55182. Отдельной уязвимости не существует.
Есть ли другие связанные уязвимости RSC?
Да. Команда React раскрыла CVE-2025-55184 и CVE-2025-67779 (DoS, CVSS 7.5), CVE-2025-55183 (раскрытие кода, CVSS 5.3) и CVE-2026-23864 (DoS, CVSS 7.5, январь 2026). Все исправляются теми же обновлениями React (19.0.1, 19.1.2, 19.2.1). Уязвимости RCE в npm-пакетах не ограничиваются React — подробнее об этом в моём анализе критической уязвимости protobuf.js CVE-2026-41242 (CVSS 9.8), где одна несанитизированная интерполяция строк скомпрометировала тысячи приложений.

Заключение

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. Обсудим ваш проект.