React2Shell: критическая RCE-уязвимость в React и Next.js
Разбор критической уязвимости CVE-2025-55182 в React Server Components, которая позволяет выполнить код на сервере без аутентификации
В начале декабря 2025 года индустрию веб-разработки потрясла новость об обнаружении критической уязвимости в React — одной из самых популярных JavaScript-библиотек в мире. Проблема получила имя React2Shell и максимальную оценку 10.0/10 по шкале CVSS, что говорит о её критичности.
Суть проблемы
React2Shell (CVE-2025-55182) — это уязвимость удалённого выполнения кода (RCE), которая позволяет атакующему выполнить произвольный JavaScript-код на сервере без какой-либо аутентификации.
Проблема кроется в механизме обработки данных через React Server Components (RSC) и конкретно через эндпоинты React Server Function. Когда сервер получает специально сформированный HTTP-запрос, происходит небезопасная десериализация данных, что приводит к выполнению вредоносного кода.
Техническая причина
Корень уязвимости — логически небезопасная десериализация:
- Сервер не может корректно валидировать структуру входящих RSC-пейлоадов
- При получении искажённых данных от атакующего валидация отказывает
- Это приводит к выполнению привилегированного 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-webpackreact-server-dom-parcelreact-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 — серьёзное напоминание о том, что даже самые популярные и проверенные инструменты могут содержать критические уязвимости. Ключевые уроки:
- Обновляйтесь немедленно — не откладывайте установку security-патчей
- Используйте EASM-решения — для своевременного обнаружения уязвимых компонентов
- Настройте многоуровневую защиту — WAF, мониторинг, ограничение доступа
- Проводите регулярный аудит — знайте, какие версии библиотек используете
- Следите за security-бюллетенями — подпишитесь на уведомления от используемых фреймворков
Ссылки
Статья подготовлена на основе анализа публичных источников и технической документации. Информация актуальна на декабрь 2025 года.