
Лаборатория безопасности исследований для CVE-2025-55183 и CVE-2025-55184 в React Server Components
Комплексная среда тестирования безопасности для уязвимостей CVE-2025-55183 (раскрытие исходного кода) и CVE-2025-55184 (отказ в обслуживании) в React Server Components.
ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ И ИССЛЕДОВАНИЙ БЕЗОПАСНОСТИ
Этот репозиторий содержит намеренно уязвимые приложения и инструменты эксплуатации. Тестируйте только на системах, которые вам принадлежат или на которые вы получили явное письменное разрешение. Несанкционированное тестирование незаконно и неэтично.
Обе уязвимости затрагивают React Server Components версий с 19.0.0 по 19.2.2, раскрыты 11 декабря 2025 года.
| Свойство | Значение |
|---|---|
| Степень опасности | Средняя (CVSS 5.3) |
| Тип | Раскрытие информации |
| Воздействие |
Злоумышленники могут принудительно вызвать раскрытие серверного исходного кода, передавая аргументы серверным действиям и вызывая .toString() на объектах серверных функций. Это раскрывает:
| Свойство | Значение |
|---|---|
| Степень опасности | Высокая (CVSS 7.5) |
| Тип | Отказ в обслуживании |
| Воздействие |
Специально созданные полезные нагрузки создают бесконечную рекурсию promise, что приводит к зависанию сервера Node.js на неопределенный срок. Результаты:
TL;DR: Приложение УЯЗВИМО (React 19.0.0), но современные механизмы защиты могут предотвратить реальный сбой в этой демо-среде.
CVE-2025-55184 — это РЕАЛЬНАЯ, КРИТИЧЕСКАЯ уязвимость, затрагивающая React 19.0.0-19.2.2 в производственных средах. Однако успешная демонстрация DoS-сбоя в локальной демонстрации может быть затруднена из-за:
Даже если эксплойт не вызывает сбой демонстрации, вы можете проверить уязвимость с помощью:
cd vulnerable-app
npm list react react-dom
# Вывод показывает:
[email protected] ← УЯЗВИМАЯ ВЕРСИЯ
[email protected] ← УЯЗВИМАЯ ВЕРСИЯ
Если вы видите 19.0.0 - 19.2.2, приложение УЯЗВИМО.
cd scanner
python scan.py http://localhost:3000
Сканер проверяет:
git clone https://github.com/StealthMoud/react-server-cve-lab.git
cd react-server-cve-lab
# Запуск приложения (уязвимого к обоим CVE)
docker-compose up --build -d
# Приложение доступно по адресу: http://localhost:3000
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
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.
# Использование Docker Compose (рекомендуется)
docker-compose up --build -d
# Проверка, запущено ли
curl http://localhost:3000
# Просмотр логов
docker-compose logs -f
# Остановка приложения
docker-compose down
cd vulnerable-app
npm install
npm run build
npm start
Единый сканер обнаруживает как CVE-2025-55183, так и CVE-2025-55184.
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
# Подробный вывод
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
╔═══════════════════════════════════════════════════════════╗
║ Сканер уязвимостей 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 - Полная техническая документация, охватывающая:
Обе уязвимости исправлены в одних и тех же версиях патчей:
Обновите React до исправленной версии:
npm install [email protected] [email protected]
# или
npm install react@latest react-dom@latest
Обновите Next.js (если применимо):
npm install next@latest
Проверьте исправление:
npm list react react-dom next
python scanner/scan.py http://localhost:3000
# Запустите сканер для подтверждения исправлений
cd scanner
python scan.py http://your-patched-app.com
# Ожидаемый вывод:
# [+] CVE-2025-55183: НЕ УЯЗВИМО
# [+] CVE-2025-55184: НЕ УЯЗВИМО
Вклад приветствуется! Области для улучшения:
Пожалуйста, не стесняйтесь отправлять Pull Request.
Этот проект лицензирован под лицензией MIT — см. файл LICENSE для подробностей.
Если вы нашли этот репозиторий полезным для ваших исследований в области безопасности, пожалуйста, поставьте ему звезду!
| Раскрытие исходного кода сервера |
| Аутентификация | Не требуется |
| Полный простой сервиса |
| Аутентификация | Не требуется |
| Аспект | CVE-2025-55183 | CVE-2025-55184 |
|---|
| Степень опасности | Средняя | Высокая |
| Тип | Раскрытие информации | Отказ в обслуживании |
| Воздействие | Утечка исходного кода | Сбой сервера |
| Обнаружение | Ответ содержит код | Тайм-аут/зависание сервера |
| Восстановление | Немедленное | Требуется перезагрузка |
| Пакет | Уязвимые версии | Исправленные версии |
|---|
| 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+ |