Обнаруживает CVE-2025-55182 RCE в React Server Components путем сканирования lock-файлов npm/pnpm/yarn, Docker-образов, SBOM и живых URL-адресов. Включает автоматическое исправление, вывод SARIF и интеграции с CI/CD.
Сканер безопасности для CVE-2025-55182 - критической (CVSS 10.0) уязвимости неаутентифицированного удалённого выполнения кода в React Server Components.
⚠️ ПРЕДУПРЕЖДЕНИЕ
Это сканер безопасности, а НЕ инструмент эксплуатации. Он предназначен для помощи разработчикам и командам безопасности в выявлении уязвимых зависимостей в их проектах.
Это проект с открытым исходным кодом, развиваемый сообществом, предоставляемый «как есть» без каких-либо гарантий, прямых или подразумеваемых. Авторы и участники не несут ответственности за любой ущерб или инциденты безопасности, возникшие в результате использования этого инструмента.
Используйте на свой страх и риск. Всегда проверяйте результаты вручную и следуйте политикам безопасности вашей организации. Если вы обнаружите какие-либо проблемы, ошибки или у вас есть предложения, пожалуйста, внесите свой вклад, чтобы помочь улучшить проект для всех.
🤝 ТРЕБУЮТСЯ УЧАСТНИКИ
Этот проект активно ищет тестировщиков и участников! Хотите ли вы сообщать об ошибках, предлагать функции, улучшать документацию или отправлять код — все вклады приветствуются. Ознакомьтесь с нашим Руководством для участников, чтобы начать.
Этот проект существует, чтобы помочь сообществу отреагировать на CVE-2025-55182. Мы признаём и благодарим:
Самый быстрый способ проверить, уязвим ли ваш проект:```bash npx react2shell-guard .
Вот и всё! Это просканирует вашу текущую директорию и сразу покажет результаты.
### 2. Сканирование конкретного проекта```bash
npx react2shell-guard /path/to/your/project
Обнаружены уязвимости? Исправьте их автоматически:```bash
npx react2shell-guard fix --dry-run
npx react2shell-guard fix
npx react2shell-guard fix --install
### 4. Сканирование живых URL-адресов
Проверьте, уязвимо ли развернутое приложение:```bash
npx react2shell-guard scan-url https://your-app.com
Убедитесь, что развёрнутое исправление работает:```bash npx react2shell-guard verify-patch https://your-app.com
### 6. Сканирование образов контейнеров
Проверьте, содержат ли ваши Docker-образы уязвимые пакеты:```bash
npx react2shell-guard scan-image myapp:latest
Автоматически создайте PR в GitHub для исправления уязвимостей:```bash npx react2shell-guard create-pr --dry-run # Preview npx react2shell-guard create-pr # Create PR
---
## Что такое CVE-2025-55182?
29 ноября 2025 года исследователь безопасности Лаклан Дэвидсон обнаружил и ответственно раскрыл критическую уязвимость в React Server Components. Проблема заключается в том, как React декодирует полезные нагрузки, отправляемые на конечные точки React Server Function, что позволяет неаутентифицированным злоумышленникам достичь удалённого выполнения кода на затронутых серверах без какого-либо взаимодействия с пользователем.
CVE-2025-55182 оценивается как CVSS 10.0 (Critical) и затрагивает React Server Components (RSC), а также фреймворки, использующие протокол RSC "Flight".
**Затронутые пакеты:**
- `react-server-dom-webpack` 19.0.0, 19.1.0-19.1.1, 19.2.0
- `react-server-dom-parcel` (same versions)
- `react-server-dom-turbopack` (same versions)
- `next` 15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.6, 16.0.0-16.0.6
**Дополнительная информация:**
- [React Security Advisory](https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components)
- [Wiz Research](https://www.wiz.io/blog/critical-vulnerability-in-react-cve-2025-55182)
---
## Установка (необязательно)
Для частого использования установите глобально:```bash
npm install -g react2shell-guard
Затем используйте без npx:```bash
react2shell-guard .
---
## Руководство по использованию
### Базовое сканирование```bash
# Scan current directory
react2shell-guard .
# Scan specific directory
react2shell-guard /path/to/project
# Scan and ignore certain paths
react2shell-guard . --ignore-path "examples/**" "test/**"
react2shell-guard .
react2shell-guard . --json
react2shell-guard . --sarif
react2shell-guard . --html report.html
### Параметры CLI
| Параметр | Описание |
|--------|-------------|
| `--json` | Вывод результатов в формате JSON |
| `--sarif` | Вывод результатов в формате SARIF 2.1.0 |
| `--html <file>` | Создать автономный HTML-отчёт |
| `--no-exit-on-vuln` | Не завершать работу с кодом 1 при обнаружении уязвимостей |
| `--ignore-path <patterns>` | Пути для игнорирования (например, `examples/**`) |
| `--debug` | Включить вывод отладочной информации |
### Коды выхода
| Код | Значение |
|------|---------|
| `0` | Уязвимости не обнаружены |
| `1` | Обнаружены уязвимости |
| `2+` | Фатальная ошибка |
## Сканирование живых URL
Сканируйте живые конечные точки, чтобы определить, уязвимы ли они:```bash
# Scan a single URL
react2shell-guard scan-url https://example.com
# Batch scan from a file (one URL per line)
react2shell-guard scan-url urls.txt --list
# With options
react2shell-guard scan-url https://example.com --timeout 5000 --json
Сканер использует пассивное снятие отпечатков для обнаружения уязвимых конечных точек React Server Components без эксплуатации уязвимости:
Пробный запрос: Отправляет специально сформированный POST-запрос, имитирующий вызов RSC Server Action, с минимальной нагрузкой:
multipart/form-data со структурой данных, похожей на RSCNext-Action для запуска обработки Server ActionАнализ ответа: Анализирует HTTP-ответ на наличие сигнатур уязвимости:
^[0-9]+:E{ — формат ошибки протокола RSC Flight"digest":"...RSC — дайджест RSC в ответах об ошибкахReactServerComponentsError — имена классов ошибок Reacttext/x-component.*error — тип содержимого ошибки компонентаНенавязчивость: Это чисто механизм обнаружения — он не выполняет вредоносную нагрузку и не эксплуатирует уязвимость. Пробный запрос использует безвредные данные, которые вызывают ответы об ошибках на уязвимых серверах, но не причиняют вреда.
Примечание: Положительное обнаружение означает, что на сервере запущена уязвимая версия и он вернул сигнатуру ошибки, специфичную для RSC. Это НЕ означает, что сервер был скомпрометирован.