
Preuve de concept d'exploitation pour CVE-2023-1177, une vulnérabilité de traversée de chemin dans MLflow, démontrant un accès non autorisé aux fichiers via des noms de modèles conçus.
MLflow est une plateforme open-source permettant de gérer l'ensemble du cycle de vie du machine learning.
Fonctions principales :
MLflow couvre quatre fonctions principales :
Suivre les expériences pour enregistrer et comparer les paramètres et les résultats (MLflow Tracking).
Conditionner le code ML sous une forme réutilisable et reproductible afin de le partager avec d'autres data scientists ou de le transférer en production (MLflow Projects).
Gérer et déployer des modèles issus de diverses bibliothèques ML vers diverses plateformes de service et d'inférence de modèles (MLflow Models).
Fournir un référentiel central de modèles pour gérer en collaboration l'ensemble du cycle de vie d'un modèle MLflow, y compris le versionnage des modèles, les transitions d'étapes et les annotations (MLflow Model Registry).
Indépendant des bibliothèques : MLflow est indépendant des bibliothèques, ce qui signifie qu'il peut être utilisé avec n'importe quelle bibliothèque de machine learning et dans n'importe quel langage de programmation, car toutes les fonctions sont accessibles via une API REST et une CLI.
API : Le projet inclut une API Python, une API R et une API Java pour plus de commodité.
Source : https://mlflow.org/docs/latest/index.html
Une vulnérabilité de traversée de chemin (path traversal) a été découverte dans MLflow. La traversée de chemin est un type de vulnérabilité web qui permet à un attaquant d'accéder à des fichiers et des répertoires stockés en dehors du répertoire prévu. Les attaquants utilisent diverses techniques pour exploiter cette vulnérabilité et obtenir un accès non autorisé à des données sensibles ou exécuter du code arbitraire. Les attaques de traversée de chemin peuvent être évitées par la validation des entrées et des mesures de contrôle d'accès.
La vulnérabilité a été découverte par Dan McInerney.
En savoir plus : https://huntr.dev/bounties/1fe8f21a-c438-4cba-9add-e8a5dab94e28/
[CVE-2023-1177]
Traversée de chemin : '..\filename' dans le dépôt GitHub mlflow/mlflow antérieur à 2.2.1.
En savoir plus : https://nvd.nist.gov/vuln/detail/CVE-2023-1177
J'ai créé un petit script Python qui peut être utilisé pour tester et exploiter la vulnérabilité.
Il créera un identifiant unique pour le nom du modèle, puis accédera à toutes les URL dans un ordre consécutif.
