Triage scanner for CVE-2025-55182 (React2Shell), the unauthenticated RCE in the React Server Components protocol, plus its Next.js downstream CVE-2025-66478. Built from my AdverXarial research on popping a react-based target through React2Shell for initial access.
Detectiononly. This tool never sendsdeserializationpayloads or exploit traffic. Version checks and fingerprinting, nothing more.
React Server Components unsafely deserialize data from HTTP requests hitting Server Function endpoints. One crafted POST body and an unauthenticated attacker runs arbitrary code in the Node.js server process. CVSS 10.0, in CISA KEV since Dec 2025, exploited in the wild within hours of disclosure.
Package |
Vulnerable |
Fixed |
|---|---|---|
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 |
14.3.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 |
15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7 |
No dependencies, standard library only.
Audit a local project (most reliable signal, reads the resolved tree):
python3 react2shell_scanner.py audit /path/to/projectFingerprint a remote host:
python3 react2shell_scanner.py scan app.example.com
python3 react2shell_scanner.py scan https://app.example.com -k --jsonVerdicts: VULNERABLE, PATCHED, NEEDS-MANUAL-CHECK, NOT-NEXTJS, UNREACHABLE.
Note: remoteNext.jsversion is rarely exposed, so most live hosts land onNEEDS-MANUAL-CHECK. Runauditagainst the deployed build for a hard answer.
Hunt logs for exploitation attempts:
python3 react2shell_scanner.py logcheck /var/log/nginx/access.logFlags POSTs carrying RSC / Flight markers (text/x-component, Next-Action). Heuristic, treat hits as leads. Exits 1 on hits for monitoring pipelines.
- Upgrade
react-server-dom-*to19.0.1/19.1.2/19.2.1andnextto the fixed release in your line. - Don't trust the top-level
reactversion, inspect the resolved tree (npm ls, lockfile). - Assume
compromiseon anything internet-facing that ran a vulnerable build: rotate secrets, check for persistence, review logs back toDec 2025.
Reactsecurity advisory forCVE-2025-55182Next.jssecurity release trackingCVE-2025-66478CISA KEVentry- My write-up:
AdverXarialon Substack
For educational and authorized testing only. Only scan systems you own or have permission to test.
Research by
Vineeth Kumar(foxcornlab). Found a bug or want a feature, open anissue.