## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-STEALTHMOUD-REACT-SERVER-CVE-LAB
# Лаборатория безопасности React Server Components (CVE-2025-55183 и CVE-2025-55184)
   
Комплексная среда тестирования безопасности для уязвимостей **CVE-2025-55183** (раскрытие исходного кода) и **CVE-2025-55184** (отказ в обслуживании) в React Server Components.
## ⚠️ Отказ от ответственности
**ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ И ИССЛЕДОВАНИЙ БЕЗОПАСНОСТИ**
Этот репозиторий содержит намеренно уязвимые приложения и инструменты эксплуатации. **Тестируйте только на системах, которые вам принадлежат или на которые вы получили явное письменное разрешение.** Несанкционированное тестирование незаконно и неэтично.
## 📋 Содержание
* Об уязвимостях
* Быстрый старт
* Структура репозитория
* Уязвимое приложение
* Использование сканера
* Подробная документация
* Устранение уязвимостей
* Лицензия
## 🔍 Об уязвимостях
Обе уязвимости затрагивают React Server Components версий с 19.0.0 по 19.2.2, раскрыты 11 декабря 2025 года.
### CVE-2025-55183: Раскрытие исходного кода (средняя степень опасности)
Свойство| Значение
---|---
**Степень опасности**| Средняя (CVSS 5.3)
**Тип**| Раскрытие информации
**Воздействие**| Раскрытие исходного кода сервера
**Аутентификация**| Не требуется
Злоумышленники могут принудительно вызвать раскрытие серверного исходного кода, передавая аргументы серверным действиям и вызывая `.toString()` на объектах серверных функций. Это раскрывает:
* Бизнес-логику и алгоритмы
* Жестко закодированные ключи API или секреты
* Внутренние детали реализации
* Запросы к базе данных и информацию о схеме
### CVE-2025-55184: Отказ в обслуживании (высокая степень опасности)
Свойство| Значение
---|---
**Степень опасности**| Высокая (CVSS 7.5)
**Тип**| Отказ в обслуживании
**Воздействие**| Полный простой сервиса
**Аутентификация**| Не требуется
Специально созданные полезные нагрузки создают бесконечную рекурсию promise, что приводит к зависанию сервера Node.js на неопределенный срок. Результаты:
* Полная недоступность сервиса
* Истощение CPU
* Блокировка цикла событий
* Требуется ручная перезагрузка
### Сравнение
Аспект| CVE-2025-55183| CVE-2025-55184
---|---|---
**Степень опасности**| Средняя| Высокая
**Тип**| Раскрытие информации| Отказ в обслуживании
**Воздействие**| Утечка исходного кода| Сбой сервера
**Обнаружение**| Ответ содержит код| Тайм-аут/зависание сервера
**Восстановление**| Немедленное| Требуется перезагрузка
## ⚠️ Важно: О CVE-2025-55184 (DoS) в этой демонстрации
### Почему DoS может не привести к сбою демо-приложения
**TL;DR** : Приложение УЯЗВИМО (React 19.0.0), но современные механизмы защиты могут предотвратить реальный сбой в этой демо-среде.
### Реальность
CVE-2025-55184 — это **РЕАЛЬНАЯ, КРИТИЧЕСКАЯ уязвимость** , затрагивающая React 19.0.0-19.2.2 в производственных средах. Однако успешная демонстрация DoS-сбоя в локальной демонстрации может быть затруднена из-за:
#### 1\. **Встроенная защита Next.js**
* Next.js 15.x включает границы ошибок, которые перехватывают и восстанавливаются после многих сбоев
* Автоматические механизмы восстановления предотвращают бесконечную рекурсию
* Производственный режим имеет другую обработку ошибок, чем уязвимый путь кода
#### 2\. **Изоляция Docker**
* Контейнеризация добавляет изоляцию процессов
* Ограничения ресурсов предотвращают полное зависание системы
* Система инициализации Docker может обнаружить и перезапустить зависшие процессы
#### 3\. **Разработка vs Производство**
* Точный уязвимый путь кода требует определенных производственных конфигураций
* Среды разработки/демонстрации имеют дополнительные механизмы безопасности
* Состояния гонки и тайминги отличаются в контейнерах
### Как проверить, что уязвимость присутствует
Даже если эксплойт не вызывает сбой демонстрации, вы можете проверить уязвимость с помощью:
#### Метод 1: Проверка версии (самый надежный)
root@kitploit:~
cd vulnerable-app
npm list react react-dom
# Вывод показывает:
some-email@example.com ← УЯЗВИМАЯ ВЕРСИЯ
some-email@example.com ← УЯЗВИМАЯ ВЕРСИЯ
**Если вы видите 19.0.0 - 19.2.2, приложение УЯЗВИМО.**
#### Метод 2: Обнаружение с помощью сканера
root@kitploit:~
cd scanner
python scan.py http://localhost:3000
Сканер проверяет:
* ✅ Версию React в уязвимом диапазоне
* ✅ Включены ли Server Actions
* ✅ Правильные заголовки ответа сервера
* ✅ Шаблоны уязвимых конечных точек
## 🚀 Быстрый старт
### Предварительные требования
* Docker и Docker Compose
* Python 3.7+
* Git
### 1\. Клонирование репозитория
root@kitploit:~
git clone https://github.com/StealthMoud/react-server-cve-lab.git
cd react-server-cve-lab
### 2\. Запуск уязвимого приложения
root@kitploit:~
# Запуск приложения (уязвимого к обоим CVE)
docker-compose up --build -d
# Приложение доступно по адресу: http://localhost:3000
### 3\. Запуск сканера
root@kitploit:~
cd scanner
# Установка зависимостей
pip install -r requirements.txt
# Сканирование на обе уязвимости
python scan.py http://localhost:3000
# Сканирование только CVE-2025-55183
python scan.py --cve 55183 http://localhost:3000
# Сканирование только CVE-2025-55184
python scan.py --cve 55184 http://localhost:3000
# Сканирование нескольких целей
python scan.py --file targets.txt
## 📁 Структура репозитория
root@kitploit:~
react-server-cve-lab/
├── README.md # Этот файл
├── DOCUMENTATION.md # Полная техническая документация
├── LICENSE
├── .gitignore
├── docker-compose.yml
│
├── vulnerable-app/ # Уязвимо к ОБОИМ CVE
│ ├── Dockerfile
│ ├── package.json
│ ├── next.config.js
│ └── app/
│ ├── layout.js
│ ├── page.js
│ └── actions.js # Уязвимые серверные действия
│
├── scanner/
│ ├── requirements.txt
│ ├── scan.py # Сканер для обоих CVE
│ └── README.md
│
└── exploits/
├── exploit-55183.py # PoC для CVE-2025-55183
├── exploit-55184.py # PoC для CVE-2025-55184
└── README.md
## 🎯 Уязвимое приложение
Приложение представляет собой Next.js приложение, работающее на React 19.0.0 с Server Actions, уязвимое к **обоим CVE**.
### Возможности
* **Server Actions** : Несколько конечных точек, демонстрирующих обе уязвимости
* **Реалистичный код** : Имитирует реальные шаблоны с секретами
* **Простое тестирование** : Простой UI для ручного тестирования
* **На основе Docker** : Изолированная, воспроизводимая среда
### Запуск приложения
root@kitploit:~
# Использование Docker Compose (рекомендуется)
docker-compose up --build -d
# Проверка, запущено ли
curl http://localhost:3000
# Просмотр логов
docker-compose logs -f
# Остановка приложения
docker-compose down
### Ручная настройка (без Docker)
root@kitploit:~
cd vulnerable-app
npm install
npm run build
npm start
## 🔎 Использование сканера
Единый сканер обнаруживает как CVE-2025-55183, так и CVE-2025-55184.
### Базовое использование
root@kitploit:~
cd scanner
# Сканирование на оба CVE
python scan.py http://localhost:3000
# Сканирование только конкретного CVE
python scan.py --cve 55183 http://localhost:3000
python scan.py --cve 55184 http://localhost:3000
### Расширенные опции
root@kitploit:~
# Подробный вывод
python scan.py --verbose http://localhost:3000
# Пользовательский тайм-аут
python scan.py --timeout 10 http://example.com
# Сканирование нескольких URL из файла
python scan.py --file targets.txt
# Сохранение результатов в JSON
python scan.py --output results.json http://localhost:3000
# Отключение проверки SSL
python scan.py --no-verify https://self-signed.example.com
# Сканирование всех CVE с подробным выводом и сохранением результатов
python scan.py --verbose --output scan-results.json http://localhost:3000
### Пример вывода
root@kitploit:~
╔═══════════════════════════════════════════════════════════╗
║ Сканер уязвимостей React Server Components ║
║ CVE-2025-55183 и CVE-2025-55184 ║
╚═══════════════════════════════════════════════════════════╝
[*] Тестирование http://localhost:3000
[CVE-2025-55183] Раскрытие исходного кода
[!] УЯЗВИМО: Исходный код раскрыт
Раскрытые функции: 3
Длина кода: 1247 символов
Содержит секреты: ✓ (найдены ключи API)
[CVE-2025-55184] Отказ в обслуживании
[!] УЯЗВИМО: DoS-атака успешна
Код статуса: 404
Content-Type: text/plain
Найдены маркеры: ✓
============================================================
СВОДКА
============================================================
Всего протестировано: 1
CVE-2025-55183 уязвимо: 1
CVE-2025-55184 уязвимо: 1
Оба CVE уязвимы: 1
Не уязвимо: 0
## 📚 Подробная документация
Для всестороннего технического анализа обеих уязвимостей:
**DOCUMENTATION.md** \- Полная техническая документация, охватывающая:
* Детальный анализ уязвимостей для обоих CVE
* Объяснение первопричин
* Методы эксплуатации с примерами
* Оценка воздействия
* Стратегии обнаружения
* Пошаговое устранение
* Лучшие практики предотвращения
* Примеры кода и PoC
## 🛡️ Устранение уязвимостей
### Необходимые немедленные действия
**Обе уязвимости исправлены в одних и тех же версиях патчей:**
1. **Обновите React** до исправленной версии:
root@kitploit:~
npm install some-email@example.com some-email@example.com
# или
npm install react@latest react-dom@latest
2. **Обновите Next.js** (если применимо):
root@kitploit:~
npm install next@latest
3. **Проверьте исправление** :
root@kitploit:~
npm list react react-dom next
python scanner/scan.py http://localhost:3000
### Исправленные версии
Пакет| Уязвимые версии| Исправленные версии
---|---|---
React| 19.0.0 - 19.2.2| 19.0.3+, 19.1.4+, 19.2.3+
Next.js 15.1.x| < 15.1.4| 15.1.4+
Next.js 15.0.x| < 15.0.4| 15.0.4+
Next.js 14.x| < 14.2.24| 14.2.24+
### Проверка после установки патча
root@kitploit:~
# Запустите сканер для подтверждения исправлений
cd scanner
python scan.py http://your-patched-app.com
# Ожидаемый вывод:
# [+] CVE-2025-55183: НЕ УЯЗВИМО
# [+] CVE-2025-55184: НЕ УЯЗВИМО
## 🔒 Лучшие практики безопасности
### Предотвращение CVE-2025-55183 (Раскрытие исходного кода)
1. **Проверка входных данных** : Всегда проверяйте входные данные Server Actions
2. **Никогда не храните секреты в коде** : Используйте переменные окружения
3. **Обфускация кода** : Рассмотрите обфускацию на этапе сборки для чувствительной логики
4. **Регулярные аудиты** : Проверяйте Server Actions на наличие чувствительных данных
### Предотвращение CVE-2025-55184 (DoS)
1. **Ограничение скорости** : Внедрите лимиты запросов
2. **Тайм-ауты** : Установите соответствующие тайм-ауты для всех асинхронных операций
3. **Проверки работоспособности** : Внедрите надежный мониторинг состояния
4. **Предохранители (Circuit Breakers)** : Предотвращайте каскадные сбои
### Общие рекомендации
* Держите React и Next.js обновленными
* Подпишитесь на уведомления безопасности
* Внедрите Web Application Firewall (WAF)
* Регулярное сканирование безопасности в CI/CD
* План реагирования на инциденты как для раскрытия, так и для DoS
## 🤝 Вклад
Вклад приветствуется! Области для улучшения:
* Дополнительные тестовые сценарии
* Улучшенные методы обнаружения
* Лучшие примеры эксплуатации
* Расширенная документация
Пожалуйста, не стесняйтесь отправлять Pull Request.
## 📄 Лицензия
Этот проект лицензирован под лицензией MIT — см. файл LICENSE для подробностей.
## 🔗 Ссылки
### Официальные уведомления
* Блог безопасности React
* Бюллетень безопасности Vercel
### Детали CVE
* CVE-2025-55183 (NVD)
* CVE-2025-55184 (NVD)
### Дополнительные ресурсы
* CWE-502: Десериализация недоверенных данных
* CWE-200: Раскрытие информации
* Документация React Server Components
## ⭐ Поддержка
Если вы нашли этот репозиторий полезным для ваших исследований в области безопасности, пожалуйста, поставьте ему звезду!
## 📧 Контакты
* **Проблемы** : GitHub Issues
* **Безопасность** : Пожалуйста, сообщайте об уязвимостях ответственно
* * *