ByteGuide
← Все статьи🇷🇺 Русский

React2Shell: критическая RCE-уязвимость в React и Next.js

Разбор критической уязвимости CVE-2025-55182 в React Server Components, которая позволяет выполнить код на сервере без аутентификации

securityreactnextjsvulnerabilityrce
⏱️ 8 мин мин. чтения

В начале декабря 2025 года индустрию веб-разработки потрясла новость об обнаружении критической уязвимости в React — одной из самых популярных JavaScript-библиотек в мире. Проблема получила имя React2Shell и максимальную оценку 10.0/10 по шкале CVSS, что говорит о её критичности.

Суть проблемы

React2Shell (CVE-2025-55182) — это уязвимость удалённого выполнения кода (RCE), которая позволяет атакующему выполнить произвольный JavaScript-код на сервере без какой-либо аутентификации.

Проблема кроется в механизме обработки данных через React Server Components (RSC) и конкретно через эндпоинты React Server Function. Когда сервер получает специально сформированный HTTP-запрос, происходит небезопасная десериализация данных, что приводит к выполнению вредоносного кода.

Техническая причина

Корень уязвимости — логически небезопасная десериализация:

  1. Сервер не может корректно валидировать структуру входящих RSC-пейлоадов
  2. При получении искажённых данных от атакующего валидация отказывает
  3. Это приводит к выполнению привилегированного JavaScript-кода в контексте сервера

Критичность проблемы усугубляется тем, что:

  • Уязвимость работает с дефолтными настройками фреймворков
  • Не требуется никаких специальных прав или конфигураций
  • Достаточно просто сетевого доступа к приложению

История обнаружения

29 ноября 2025 — новозеландский ИБ-специалист Лаклан Дэвидсон (Lachlan Davidson) обнаружил проблему и уведомил разработчиков Meta.

3 декабря 2025 — информация была раскрыта публично, начался выпуск патчей.

За менее чем сутки после раскрытия:

  • В сети появились proof-of-concept эксплоиты
  • Уязвимость добавили в различные сканеры безопасности
  • Начали распространяться фейковые PoC (использующие vm.runInThisContext, child_process.exec, fs.writeFile — которые не работают с Next.js)

Дэвидсон запустил специальный сайт react2shell.com для публикации технических деталей.

Масштаб проблемы

Цифры, демонстрирующие серьёзность ситуации:

  • 55.8 млн загрузок React в неделю через npm
  • 16.7 млн загрузок Next.js в неделю
  • ~968,000 серверов, использующих уязвимые фреймворки
  • 39% всех облачных сред содержат уязвимые инстансы
  • 10,000-25,000 российских веб-ресурсов под угрозой

Затронутые пакеты

React (версии 19.0, 19.1.0, 19.1.1, 19.2.0):

  • react-server-dom-webpack
  • react-server-dom-parcel
  • react-server-dom-turbopack

Next.js:

  • Canary-релизы начиная с 14.3.0-canary.77
  • Все релизы веток 15.x и 16.x ниже пропатченных версий

Другие фреймворки (вероятно уязвимы):

  • Vite RSC plugin
  • Parcel RSC plugin
  • React Router RSC preview
  • RedwoodSDK
  • Waku

Важное уточнение

Даже если ваше приложение не реализует эндпоинты React Server Function, оно всё равно может быть уязвимо, если поддерживает React Server Components (RSC).

— Разработчики React

Однако стоит отметить, что проблема в основном затрагивает:

  • Свежую версию React 19
  • Приложения, использующие относительно новую функциональность React Server
  • Это несколько снижает общую панику, но не отменяет серьёзность проблемы

Решение и защита

1. Обновление до исправленных версий

React — обновить до версий:

  • 19.0.1
  • 19.1.2
  • 19.2.1

Next.js — обновить до версий:

  • 16.0.7
  • 15.5.7, 15.4.8, 15.3.6, 15.2.6, 15.1.9, 15.0.5

2. Временные меры защиты (до установки патчей)

Если немедленное обновление невозможно:

Развернуть WAF-правила

Настройте правила Web Application Firewall для блокировки подозрительных запросов к RSC-эндпоинтам. Создайте правила для обнаружения аномальных паттернов в заголовках и теле запросов к Server Function endpoints.

Большинство основных облачных провайдеров уже развернули автоматическую защиту от React2Shell: Cloudflare (для всех клиентов), AWS, Akamai, Fastly и Google Cloud.

Мониторинг трафика

Отслеживайте подозрительные запросы к Server Function endpoints и ищите аномальные паттерны в RSC-пейлоадах.

Ограничение доступа

# Временно ограничить сетевой доступ к затронутым приложениям
# через firewall или nginx
location /api/server-functions {
    allow 10.0.0.0/8;  # только внутренняя сеть
    deny all;
}

3. Аудит инфраструктуры

Необходимо провести аудит всех сред:

# Проверить версии React
npm list react

# Проверить версии Next.js
npm list next

# Проверить использование React Server Components
grep -r "use server" ./src

Реакция индустрии

Компания Vercel (создатели Next.js) попыталась присвоить своей уязвимости отдельный идентификатор CVE-2025-66478, но NIST отклонил его как дубликат CVE-2025-55182.

ИБ-эксперт Джастин Мур (Palo Alto Networks Unit 42) назвал React2Shell универсальным «мастер-ключом», который не ломает систему, а злоупотребляет её доверием к входящим данным.

Кевин Бомонт — известный ИБ-исследователь — призвал не паниковать, отметив ограниченность проблемы свежими версиями и новой функциональностью.

Прогноз

Специалисты уверены: массовая эксплуатация уязвимости — это не вопрос «если», а вопрос «когда». На момент публикации сообщений об эксплуатации в реальных атаках не поступало, но появление PoC-эксплоитов и добавление в сканеры делает атаки вопросом времени.

Выводы

React2Shell — серьёзное напоминание о том, что даже самые популярные и проверенные инструменты могут содержать критические уязвимости. Ключевые уроки:

  1. Обновляйтесь немедленно — не откладывайте установку security-патчей
  2. Используйте EASM-решения — для своевременного обнаружения уязвимых компонентов
  3. Настройте многоуровневую защиту — WAF, мониторинг, ограничение доступа
  4. Проводите регулярный аудит — знайте, какие версии библиотек используете
  5. Следите за security-бюллетенями — подпишитесь на уведомления от используемых фреймворков

Ссылки


Статья подготовлена на основе анализа публичных источников и технической документации. Информация актуальна на декабрь 2025 года.