
Proof-of-Concept-Exploit für CVE-2023-1177, eine Path-Traversal-Schwachstelle in MLflow, die unbefugten Dateizugriff über manipulierte Modellnamen demonstriert.
MLflow ist eine Open-Source-Plattform zur Verwaltung des gesamten Machine-Learning-Lebenszyklus.
Primäre Funktionen:
MLflow befasst sich mit vier primären Funktionen:
Tracking von Experimenten, um Parameter und Ergebnisse aufzuzeichnen und zu vergleichen (MLflow Tracking).
Verpacken von ML-Code in einer wiederverwendbaren, reproduzierbaren Form, um ihn mit anderen Data Scientists zu teilen oder in die Produktion zu überführen (MLflow Projects).
Verwalten und Bereitstellen von Modellen aus einer Vielzahl von ML-Bibliotheken auf einer Vielzahl von Modell-Serving- und Inferenzplattformen (MLflow Models).
Bereitstellen eines zentralen Modell-Repositorys zur kollaborativen Verwaltung des gesamten Lebenszyklus eines MLflow-Modells, einschließlich Modellversionierung, Stufenübergängen und Annotationen (MLflow Model Registry).
Bibliotheksunabhängig: MLflow ist bibliotheksunabhängig, d. h. es kann mit jeder Machine-Learning-Bibliothek und in jeder Programmiersprache verwendet werden, da alle Funktionen über eine REST-API und CLI zugänglich sind.
API: Das Projekt enthält eine Python-API, R-API und Java-API für den Komfort.
Quelle: https://mlflow.org/docs/latest/index.html
Eine Path-Traversal-Schwachstelle wurde in MLflow gefunden. Path Traversal ist eine Art von Web-Schwachstelle, die es einem Angreifer ermöglicht, auf Dateien und Verzeichnisse zuzugreifen, die außerhalb des vorgesehenen Verzeichnisses gespeichert sind. Angreifer nutzen verschiedene Techniken, um diese Schwachstelle auszunutzen und unbefugten Zugriff auf sensible Daten zu erlangen oder beliebigen Code auszuführen. Path-Traversal-Angriffe können durch Eingabevalidierung und Zugriffskontrollmaßnahmen verhindert werden.
Die Schwachstelle wurde von Dan McInerney entdeckt.
[CVE-2023-1177]
Path Traversal: '..\filename' im GitHub-Repository mlflow/mlflow vor 2.2.1.
Mehr lesen: https://nvd.nist.gov/vuln/detail/CVE-2023-1177
Ich habe ein kleines Python-Skript erstellt, das zum Testen und Ausnutzen der Schwachstelle verwendet werden kann.
Es erstellt eine eindeutige ID für den Modellnamen und greift dann nacheinander auf alle URLs zu.
