MLflow jest podatny na atak Local File Inclusion (LFI) wynikający z nieprawidłowego parsowania URI, który umożliwia nieuwierzytelnionym atakującym odczyt dowolnych plików na serwerze. Podatność jest krytyczna ze względu na brak wymagań co do uwierzytelnienia i możliwość obejścia mechanizmów zabezpieczających.
▸ Pokaż oryginał (EN)
mlflow/mlflow is vulnerable to Local File Inclusion (LFI) due to improper parsing of URIs, allowing attackers to bypass checks and read arbitrary files on the system. The issue arises from the 'is_local_uri' function's failure to properly handle URIs with empty or 'file' schemes, leading to the misclassification of URIs as non-local. Attackers can exploit this by crafting malicious model versions with specially crafted 'source' parameters, enabling the reading of sensitive files within at least two directory levels from the server's root.
Podatność tkwi w funkcji 'is_local_uri', która nieprawidłowo obsługuje URI z pustym schematem lub schematem 'file', błędnie klasyfikując je jako adresy nielokalne. Atakujący może spreparować złośliwą wersję modelu ze specjalnie skonstruowanym parametrem 'source', zawierającym odpowiednio spreparowane URI. Dzięki temu mechanizm weryfikacji zostaje ominięty (path traversal), a serwer odczytuje i zwraca pliki spoza dozwolonego katalogu — co najmniej z dwóch poziomów katalogów od katalogu głównego serwera.
Atakujący bez uwierzytelnienia może odczytać dowolne wrażliwe pliki na serwerze, takie jak konfiguracje, klucze API, dane uwierzytelniające czy inne poufne informacje systemowe. Atak może prowadzić do poważnego naruszenia poufności danych przy ograniczonym wpływie na integralność systemu.
Należy zastosować patch dostępny w repozytorium MLflow — commit 438a450714a3ca06285eeea34bdc6cf79d7f6cbc. Zaleca się aktualizację do wersji zawierającej powyższą poprawkę zgodnie z referencjami producenta oraz ograniczenie dostępu sieciowego do instancji MLflow wyłącznie do zaufanych użytkowników.
MLflow (lfprojects/mlflow) — wersje wskazane w referencjach producenta
Szczegóły podatności zostały zgłoszone i opublikowane za pośrednictwem platformy huntr.com (bounty ID: 8ea058a7-4ef8-4baf-9198-bc0147fc543c). Podatność obejmuje dwie klasy CWE: CWE-29 (Path Traversal) oraz CWE-22 (Improper Limitation of a Pathname to a Restricted Directory).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:NLfprojects Mlflow
APPLfprojects< 2.10.0
Powiązane podatności
MLflow: nieautoryzowany dostęp do endpointów multipart upload (RCE)
MLflow: nieprawidłowa walidacja origin umożliwia RCE przez cross-origin request
Brak uwierzytelnienia w endpointach FastAPI jobs w MLflow (Auth Bypass / RCE)
Command injection w MLflow podczas inicjalizacji kontenera modelu
Path traversal w MLflow — nadpisanie plików i eskalacja uprawnień