
Prueba de concepto del exploit para CVE-2023-1177, una vulnerabilidad de path traversal en MLflow, que demuestra el acceso no autorizado a archivos mediante nombres de modelo manipulados.
MLflow es una plataforma de código abierto para gestionar el ciclo de vida completo del aprendizaje automático.
Funciones principales:
MLflow aborda cuatro funciones principales:
Seguimiento de experimentos para registrar y comparar parámetros y resultados (MLflow Tracking).
Empaquetado de código de ML en una forma reutilizable y reproducible para compartir con otros científicos de datos o transferir a producción (MLflow Projects).
Gestión e implementación de modelos de una variedad de bibliotecas de ML en una variedad de plataformas de servicio e inferencia de modelos (MLflow Models).
Proporcionar un almacén central de modelos para gestionar de forma colaborativa el ciclo de vida completo de un modelo de MLflow, incluido el versionado de modelos, las transiciones de etapas y las anotaciones (MLflow Model Registry).
Independiente de bibliotecas: MLflow es independiente de bibliotecas, lo que significa que se puede utilizar con cualquier biblioteca de aprendizaje automático y en cualquier lenguaje de programación, ya que todas las funciones son accesibles a través de una API REST y CLI.
API: El proyecto incluye una API de Python, una API de R y una API de Java para mayor comodidad.
Fuente: https://mlflow.org/docs/latest/index.html
Se encontró una vulnerabilidad de path traversal en MLflow. El path traversal es un tipo de vulnerabilidad web que permite a un atacante acceder a archivos y directorios almacenados fuera del directorio previsto. Los atacantes utilizan diversas técnicas para explotar esta vulnerabilidad y obtener acceso no autorizado a datos sensibles o ejecutar código arbitrario. Los ataques de path traversal se pueden prevenir mediante la validación de entrada y medidas de control de acceso.
La vulnerabilidad fue descubierta por Dan McInerney.
[CVE-2023-1177]
Path Traversal: '..\filename' en el repositorio de GitHub mlflow/mlflow anterior a 2.2.1.
He creado un pequeño script de Python que se puede utilizar para probar y explotar la vulnerabilidad.
Creará un ID único para el nombre del modelo y luego accederá a todas las URL en orden consecutivo.
