Laboratorio Docker aislado y escáner estático para CVE-2025-55182, con builds vulnerables o parcheadas de Next.js y validación de PoC de la deserialización de RSC Flight.
Aviso legal: Este repositorio y sus artefactos de PoC se crean estrictamente con fines educativos, de investigación y de demostración de seguridad defensiva dentro de un entorno de laboratorio aislado. Las pruebas no autorizadas contra sistemas externos están estrictamente prohibidas.
Este repositorio proporciona un entorno Docker reproducible de doble contenedor diseñado para analizar, explotar y validar mitigaciones para la vulnerabilidad de deserialización del Protocolo Flight de React Server Components (RSC) (conocida popularmente como React2Shell / CVE-2025-55182). El laboratorio demuestra el impacto posterior a la explotación en una compilación de Next.js sin parchear y prueba la eficacia de las mitigaciones en una compilación parcheada.
http://127.0.0.1:3001 (contenedor react2shell-vulnerable)http://127.0.0.1:3002 (contenedor react2shell-patched)internal: true).127.0.0.1 (localhost) para impedir la accesibilidad externa desde la LAN.DUMMY_SECRET=LAB_VULNERABLE_SECRET_DO_NOT_USE_12345) para las pruebas de exfiltración y eliminar la exposición de datos sensibles.24.0.0+, Compose v2.20.0+)3.8+ — Solo biblioteca estándar para la automatización básica)Clona el repositorio y verifica tu entorno local:
git clone https://github.com/PhanHoangKhang/React2Shell.git
Navega al directorio lab/ e inicializa ambos contenedores de compilación dual:
cd lab
docker-compose up -d --build
cd ..
Ejecuta el escáner de detección en ambos laboratorios:
python src/react2shell_scanner.py lab/patched
python src/react2shell_scanner.py lab/vulnerable
cd lab
docker-compose stop
cd ..
Para ejecutar las pruebas de validación de la explotación y verificar los artefactos de exfiltración, consulta la guía detallada paso a paso del PoC:
👉 Ver la Guía de Validación del PoC y de Vulnerabilidades (poc_reference.md)
| Servicio Objetivo | Framework / Paquete | Versión Instalada | Formato del Lockfile |
|---|---|---|---|
Objetivo Vulnerable (:3001) | Next.js | 15.0.0-rc.1 | package-lock.json (Lockfile Version 3) |
| React / React-DOM | 19.0.0-rc-65a56d0e-20241020 | Publicación del Registro NPM | |
Objetivo Parcheado (:3002) | Next.js | 15.0.3 (Estable) | package-lock.json (Lockfile Version 3) |
| React / React-DOM | 19.0.0 (Estable) | Publicación del Registro NPM |
package-lock.json (formato v3). El escáner estático prioriza el análisis del árbol de dependencias resuelto dentro de packages["node_modules/next"] para una detección precisa.< 15.0.3 (incluidas las compilaciones 15.0.0-rc) como vulnerables a la deserialización del Protocolo Flight de RSC.