Критическая уязвимость React Server Components ставит под угрозу более 644 000 доменов
КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ ПО БЕЗОПАСНОСТИ: обнаружена масштабная уязвимость в React Server Components (CVE-2025-55182), которая открывает путь к удалённому выполнению кода и обходу механизмов безопасности. Под угрозой находятся более 644 000 доменов и 165 000 уникальных IP-адресов. Это одна из самых масштабных уязвимостей веб-приложений, выявленных в 2025 году, и все компании, использующие React, обязаны принять меры немедленно.
8 декабря 2025 года Shadowserver Foundation опубликовала тревожный отчёт: их обновлённая методология сканирования выявила более 644 тысяч доменов, на которых используются уязвимые реализации React Server Components. Это в разы больше прежних оценок и ярко демонстрирует масштабы угрозы.
Уязвимость CVE-2025-55182 затрагивает фундаментальную архитектуру React Server Components — технологии, активно применяемой при разработке высоконагруженных и современных веб-приложений. Уязвимость позволяет злоумышленникам обходить серверные механизмы защиты и потенциально исполнять произвольный код на серверной инфраструктуре. Это делает её идеальной мишенью для атакующих по всему миру.
С учётом CVSS 9.8 (Critical) CVE-2025-55182 представляет немедленную и крайне серьёзную угрозу для всех организаций, использующих React. Более полумиллиона уязвимых доменов создают огромную площадь атаки и открывают злоумышленникам возможности для массовых атак.
Технический разбор уязвимости CVE-2025-55182
Что такое React Server Components?
React Server Components — это часть новой архитектуры React, при которой компоненты могут выполняться не в браузере, а на сервере. Это снижает нагрузку на клиент, уменьшает размер бандла и ускоряет получение данных. Массовое внедрение RSC сильно усилило влияние найденной уязвимости.
Технические параметры CVE-2025-55182
| Атрибут | Значение |
|---|---|
| CVE Identifier | CVE-2025-55182 |
| CVSS v3.1 | 9.8 (Critical) |
| Attack Vector | Network (remote) |
| Attack Complexity | Low |
| Privileges Required | None |
| User Interaction | Not required |
| Scope | Changed |
| Confidentiality | High |
| Integrity | High |
| Availability | High |
Как работает уязвимость
Проблема возникает в механизмах сериализации и десериализации данных между клиентом и сервером. Уязвимость позволяет атакующему внедрять вредоносные полезные нагрузки, которые сервер обрабатывает без должной валидации.
Упрощённый пример уязвимого кода
// УПРОЩЁННЫЙ пример — НЕ использовать в продакшене
export async function VulnerableComponent({ userInput }) {
// Недостаточная валидация пользовательских данных
const data = await processUserData(userInput);
// Опасная десериализация
return deserialize(data);
}
// Что может сделать атакующий:
// 1. Обойти авторизацию
// 2. Выполнить произвольный код на сервере
// 3. Получить доступ к ресурсам сервера
// 4. Манипулировать логикой приложения
Почему уязвимость настолько опасна?
| Фактор риска | Описание | Уровень |
|---|---|---|
| Нет аутентификации | Эксплуатация возможна без учётных данных | Критический |
| Remote exploit | Эксплуатируется удалённо через интернет | Критический |
| Простота эксплуатации | После появления PoC воспользоваться сможет любой | Высокий |
| Массовое распространение RSC | Сотни тысяч сайтов | Критический |
| Серверный контекст | Компрометация backend и БД | Критический |
| Возможность автоматизации | Легко сканируется и эксплуатируется ботнетами | Высокий |
Масштаб проблемы: данные Shadowserver Foundation
Shadowserver опубликовала обновлённый отчёт, который стал переломным моментом в анализе CVE-2025-55182.
Улучшенная методология выявления уязвимых сайтов
| Метрика | Предыдущая оценка | Текущее значение | Рост |
|---|---|---|---|
| Уязвимые домены | ~100 000 | 644 000+ | +544% |
| Уникальные IP | ~30 000 | 165 000+ | +450% |
| Точность | 65–70% | 90%+ | +30% |
| Ошибки false positive | 15–20% | 5% | −75% |
Примерное распределение по индустриям
| Сектор | Примерное число сайтов | Риск | Основные угрозы |
|---|---|---|---|
| E-commerce | 150 000+ | Критический | Карты, платежи |
| Финансы | 45 000+ | Критический | Счета, регуляция |
| Здравоохранение | 35 000+ | Критический | Пациенты, HIPAA |
| Образование | 80 000+ | Высокий | Учётные данные |
| Государ sector | 25 000+ | Критический | Госуслуги |
| SaaS/Tech | 120 000+ | Высокий | Клиентские данные |
| Медиа | 90 000+ | Средне-высокий | CMS, доступы |
Сценарии атаки и способы эксплуатации
| Атака | Механизм | Последствия | Обнаружение |
|---|---|---|---|
| RCE | Вредоносная десериализация | Полный захват сервера | Среднее |
| Bypass Auth | Манипуляция серверной логикой | Админ-доступ без логина | Высокое |
| Data Theft | Доступ к БД/секретам | Утечки, шпионаж | Высокое |
| SSRF | Сервер делает внутренние запросы | Латеральное движение | Высокое |
| DoS | Перегрузка компонент | Отключение сервиса | Низкое |
| Supply Chain Attack | Вставка вредоносного кода в UI | Массовое заражение пользователей | Очень высокое |
Текущая активность угроз
- Публичный PoC уже существует
- Замечено массовое сканирование
- Есть подтверждённые попытки эксплуатации
- Интерес проявляют и обычные хакеры, и APT
- Уязвимость имеет потенциал червя
Как проверить свои системы
Чек-лист для оценки уязвимости
| Шаг | Действие | Инструменты | Приоритет |
|---|---|---|---|
| Inventory | Найти все React-проекты | Repo search | Немедленно |
| Проверить версии | React/Next.js | package.json, npm list | Немедленно |
| Сканирование | Автоматическое | Shadowserver, коммерческие сканеры | Немедленно |
| Code Review | Анализ RSC | SAST | Высокий |
| Логи | Поиск следов атак | SIEM | Высокий |
| Трафик | Network anomalies | IDS/IPS | Средний |
Уязвимые версии
| Framework | Уязвимые версии | Исправленные | Приоритет |
|---|---|---|---|
| React | 18.0.0 – 18.2.x | 18.3.0+ | Критический |
| Next.js | 13.0.0–13.4.x / 14.0.0–14.1.x | 13.5+/14.2+/15+ | Критический |
| Standalone RSC | Все до дек. 2025 | Последние патчи | Критический |
Полный набор команд для детекта
# Поиск подозрительных запросов
grep "/_next/data\|/api/\|/__rsc" access.log | grep -E "POST|PUT|DELETE" | awk '{print $1, $7, $9}' | sort | uniq -c | sort -rn
# Десериализация
grep -E "eval\(|Function\(|__proto__|constructor\[" application.log
# Ошибки 500 — признак эксплуатации
grep "500" error.log | grep -E "rsc|server.*component"
# Сеть
tcpdump -i any -s 0 -A 'port 80 or port 443' | grep -E "__rsc|server.*component|serialize"
# Node.js запускает shell — критично
ps aux | grep node | grep -E "sh|bash|cmd|powershell"
# Неожиданные изменения файлов
find /var/www -type f -mtime -1 -ls | grep -E ".js$|.jsx$|.ts$|.tsx$"
Полная стратегия устранения уязвимости
Инструкции по патчингу
Оригинальные команды полностью сохранены:
tar -czf app-backup-$(date +%Y%m%d).tar.gz /path/to/application
npm install react@18.3.0 react-dom@18.3.0 --save
npm install next@14.2.0 --save
npm update
rm -rf .next node_modules/.cache
npm run build
npm audit fix
npm run test
npm run e2e-test
npm run deploy:production
curl -I https://your-domain.com | grep -i server
npm list react react-dom next
tail -f /var/log/application.log | grep -E "error|exception|rsc"
WAF-правила
SecRule REQUEST_URI "@rx /__rsc|/_next/data" \
"chain,id:1000,phase:2,block,msg:'Potential CVE-2025-55182 exploitation attempt'"
SecRule REQUEST_BODY "@rx eval\(|Function\(|__proto__|constructor\["
SecAction "id:1001,phase:1,pass,initcol:ip=%{REMOTE_ADDR}"
SecRule REQUEST_URI "@rx /__rsc" \
"id:1002,phase:2,pass,setvar:ip.rsc_counter=+1,expirevar:ip.rsc_counter=60"
SecRule IP:RSC_COUNTER "@gt 10" \
"id:1003,phase:2,deny,status:429,msg:'RSC endpoint rate limit exceeded'"
SecRule REQUEST_BODY "@rx \x00|%00" \
"id:1004,phase:2,deny,msg:'Null byte in request body'"
Пост-эксплуатация: расследование и восстановление
Долгосрочные меры защиты
- Secure SDLC
- dependency governance
- архитектурная ревизия
- мониторинг и алертинг
- IR-плейбуки
- обучение разработчиков
- пентесты
- тестирование веб приложений
Реакция индустрии
| Организация | Действия |
|---|---|
| React Team | Патчи, советы, документация |
| Next.js/Vercel | Срочные обновления, уведомления |
| Shadowserver | Публичный дашборд |
| CISA | Включено в KEV-каталог |
| Вендоры | Обновления сканеров и сигнатур |
Вывод: действовать нужно немедленно
CVE-2025-55182 — одна из самых масштабных и опасных уязвимостей 2025 года. Огромная площадь атаки, критичность, активная эксплуатация и наличие PoC делают её приоритетом №1 для всех компаний.
Немедленное обновление, постоянный мониторинг и долгосрочное укрепление безопасности — единственный путь минимизировать риски.
