
Пассивный сканер уязвимостей для CVE-2025-55182 и CVE-2025-66478, обнаруживающий неаутентифицированное RCE в React Server Components через фингерпринтинг фреймворка, анализ версий и проверку RSC-эндпоинтов.
Инструмент обнаружения удалённого выполнения кода в протоколе Flight библиотеки React Server Components
Данный сканер выявляет системы, потенциально уязвимые к CVE-2025-55182 (React) и CVE-2025-66478 (Next.js) — критическим уязвимостям удалённого выполнения кода без аутентификации в протоколе "Flight" библиотеки React Server Components (RSC).
Ключевые факторы риска:
Критическая уязвимость небезопасной десериализации в реализации Server Components библиотеки React. Протокол "Flight" в RSC не выполняет надлежащую проверку структуры и типов входящих полезных нагрузок, что позволяет злоумышленникам внедрять вредоносные данные, влияющие на выполнение на стороне сервера.
| Пакет | Уязвимые версии | Исправленные версии |
|---|---|---|
| react-server-dom-webpack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-parcel | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-turbopack | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| Next.js | 14.3.0-canary.77+, 15.x, 16.0.0-16.0.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
Attacker → Crafted HTTP POST → RSC Endpoint → Deserialization → RCE
Для атаки требуется лишь специально сформированный HTTP-запрос к любой конечной точке серверной функции. Аутентификация не требуется, а конфигурации по умолчанию уязвимы.
Сканер использует пассивное снятие отпечатков и зондирование протокола для выявления потенциально уязвимых систем. Он НЕ пытается осуществить эксплуатацию.
┌─────────────────────────────────────────────────────────────────┐
│ DETECTION PIPELINE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. Framework Detection │
│ ├── HTTP Headers (X-Powered-By: Next.js) │
│ ├── Page Source (__NEXT_DATA__, react artifacts) │
│ └── Build Manifests │
│ │
│ 2. Version Fingerprinting │
│ ├── Embedded version strings in JS bundles │
│ ├── Package version patterns │
│ └── Build manifest analysis │
│ │
│ 3. RSC Endpoint Discovery │
│ ├── Send RSC headers (RSC: 1, Accept: text/x-component) │
│ ├── Analyze response Content-Type │
│ └── Detect Flight protocol markers in response │
│ │
│ 4. Server Actions Probing │
│ ├── POST request with minimal Flight payload │
│ ├── Check for deserialization processing │
│ └── Identify action endpoints │
│ │
│ 5. Vulnerability Assessment │
│ ├── Correlate version with known vulnerable ranges │
│ ├── Weight RSC endpoint presence │
│ └── Generate confidence-scored verdict │
│ │
└─────────────────────────────────────────────────────────────────┘
| Индикатор | Метод обнаружения | Достоверность |
|---|---|---|
X-Powered-By: Next.js | Проверка HTTP-заголовков | Высокая |
Тег скрипта __NEXT_DATA__ | Разбор исходного кода HTML | Высокая |
Пути к ресурсам /_next/ | Разбор исходного кода HTML | Средняя |
| Маркеры гидратации React | Разбор исходного кода HTML | Средняя |
Протокол Flight использует специфический формат передачи данных:
0:["$","div",null,{"children":"Hello"}]
1:["$","$L1",null,{}]
2:{"name":"ServerComponent"}
Сканер ищет:
text/x-component{number}:{payload}$, $L, $F, $@, $undefinedПоиск шаблонов версий в:
/_next/static/chunks/)[email protected])requests# Clone or download the scanner files
# Install dependencies
pip install -r requirements.txt
# Verify installation
python3 cve-2025-55182-scanner.py --help
# Single target
python3 cve-2025-55182-scanner.py -t https://example.com
# With verbose output
python3 cve-2025-55182-scanner.py -t https://example.com -v
# Create targets file (one URL per line)
echo "https://app1.example.com" > targets.txt
echo "https://app2.example.com" >> targets.txt
# Scan all targets
python3 cve-2025-55182-scanner.py -f targets.txt -o results.json
python3 cve-2025-55182-scanner.py -t https://example.com \
--timeout 15 \
--threads 10 \
--user-agent "SecurityAudit/1.0" \
-v \
-o scan_results.json
| Параметр | Описание | По умолчанию |
|---|---|---|
-t, --target | URL одиночной цели | - |
-f, --file | Файл со списком целей | - |
-o, --output | Файл вывода в формате JSON | - |
-v, --verbose | Показывать подробные доказательства | False |
--timeout | Таймаут запроса (секунды) | 10 |
--threads | Параллельные потоки | 5 |
--verify-ssl | Проверять SSL-сертификаты | False |
--user-agent | Пользовательский User-Agent | Mozilla/5.0... |
--no-banner | Скрыть баннер | False |
Для более глубокого анализа протокола:
python3 rsc_analyzer.py https://example.com 2>/dev/null
Это обеспечивает детальный анализ протокола Flight и перечисление компонентов.