
React2Shell Scanner (CVE-2025-55182 & CVE-2025-66478)
Неинтрузивный инструмент обнаружения для выявления уязвимых реализаций React Server Components (RSC), подверженных влиянию CVE-2025-55182 (React) и CVE-2025-66478 (Next.js). Этот инструмент выполняет активное обнаружение с использованием безвредных, незлонамеренных полезных нагрузок для определения, уязвим ли сервер, без выполнения какого-либо вредоносного кода.
CVE-2025-55182 и CVE-2025-66478 — это критические уязвимости удаленного выполнения кода (RCE) без аутентификации в протоколе "Flight" React Server Components. Эти уязвимости затрагивают:
react-server-dom 19.0.0, 19.1.0, 19.1.1 и 19.2.0Уязвимости возникают из-за небезопасной десериализации в логике обработки полезных нагрузок RSC, что позволяет данным, контролируемым злоумышленником, влиять на выполнение на стороне сервера. Стандартные конфигурации уязвимы — стандартное приложение Next.js, созданное с помощью create-next-app, может быть эксплуатировано без каких-либо изменений кода.
Этот инструмент выполняет активное обнаружение уязвимостей путем:
Инструмент использует три метода обнаружения:
loadServerReferencearrayBufferВажно: Этот инструмент НЕ выполняет никакого вредоносного кода. Он только отправляет тщательно crafted безвредные полезные нагрузки, предназначенные для запуска ответов об ошибках, которые раскрывают статус уязвимости сервера.
python react2shell_scanner.py --target https://example.com
python react2shell_scanner.py --target https://example.com --action-id YOUR_ACTION_ID
python react2shell_scanner.py --target https://example.com --verbose
[+] CVE-2025-55182 and CVE-2025-66478 Vulnerability Checker
[*] Target: https://example.com
[*] Action ID: c67c4e1a40fcc26b5e3c0d5d17f16786f4244989
[*] Test 1: Sending $F (Server Reference) payload...
Status: 500, Evidence: workers
[*] Test 2: Sending $L (Lazy) payload...
Status: 500, Evidence: arraybuffer
[+] Result:
[!] Status: LIKELY VULNERABLE
[!] Confidence: HIGH
[!] Evidence: workers
[!] Details: Server reached loadServerReference (Flight $F deserialization bypass)
[!] RECOMMENDATION: Upgrade to patched version
======================================================================
[+] CVE-2025-55182 and CVE-2025-66478 Vulnerability Checker
[*] Target: https://example.com
[*] Action ID: c67c4e1a40fcc26b5e3c0d5d17f16786f4244989
[*] Test 1: Sending $F (Server Reference) payload...
Status: 500, Evidence: could not find the module
[*] Test 2: Sending $L (Lazy) payload...
Status: 500, Evidence: in the react server manifest
[+] Result:
[+] Status: LIKELY NOT VULNERABLE
[+] Confidence: HIGH
[+] Evidence: could not find the module
[+] Details: Server rejected payload with security error (patched)
======================================================================
Инструмент ищет следующие шаблоны ошибок, указывающие на уязвимость:
workers — Сервер достиг loadServerReference (HIGH confidence)arraybuffer — Сервер достиг обработчика типа $L (HIGH confidence)cannot read properties of null (reading 'id') — Сервер достиг loadServerReference с нулевыми метаданными (HIGH confidence)entries — Серверное действие получило десериализованный объект вместо FormData (MEDIUM confidence)temporary client reference — Сервер обработал ссылку типа $T (MEDIUM confidence)Следующие шаблоны ошибок указывают на то, что сервер исправлен:
could not find the modulein the react server manifestInvalid server referenceServer reference not foundUnexpected tokenis probably a bug in the react server components bundler| Продукт | Уязвимые версии | Исправленные версии |
|---|---|---|
react-server-dom | 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, 15.x, 16.x (App Router) | 14.3.0-canary.88, 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
Другие фреймворки, использующие RSC, также могут быть затронуты:
Требуется немедленное действие: Обновитесь до исправленных версий:
react-server-dom 19.0.1, 19.1.2 или 19.2.1react-serverЭтот инструмент предназначен для защитного тестирования безопасности и оценки уязвимостей. Он использует только безвредные полезные нагрузки, которые не выполняют вредоносный код. Однако:
Этот инструмент предоставляется "как есть" без каких-либо гарантий. Авторы не несут ответственности за любое неправомерное использование или ущерб, причиненный этим инструментом. Всегда убедитесь, что у вас есть соответствующие разрешения перед тестированием любых систем.
| Аргумент | Обязательный | По умолчанию | Описание |
|---|
--target | Да | - | Целевой URL для проверки (должен начинаться с http:// или https://) |
--action-id | Нет | c67c4e1a40fcc26b5e3c0d5d17f16786f4244989 | Идентификатор действия, используемый в полезной нагрузке |
--verbose, -v | Нет | False | Включить подробный вывод с телами ответов |