
Proof-of-concept exploit per CVE-2023-1177, una vulnerabilità di path traversal in MLflow, che dimostra l'accesso non autorizzato ai file tramite nomi di modelli appositamente costruiti.
MLflow è una piattaforma open-source per la gestione dell'intero ciclo di vita del machine learning.
Funzioni principali:
MLflow gestisce quattro funzioni principali:
Tracciamento degli esperimenti per registrare e confrontare parametri e risultati (MLflow Tracking).
Impacchettamento del codice ML in una forma riutilizzabile e riproducibile, da condividere con altri data scientist o trasferire in produzione (MLflow Projects).
Gestione e distribuzione di modelli da una varietà di librerie ML a una varietà di piattaforme di serving e inferenza dei modelli (MLflow Models).
Fornitura di un repository centrale di modelli per gestire in modo collaborativo l'intero ciclo di vita di un modello MLflow, inclusi versionamento dei modelli, transizioni di fase e annotazioni (MLflow Model Registry).
Indipendente dalle librerie: MLflow è indipendente dalle librerie, il che significa che può essere utilizzato con qualsiasi libreria di machine learning e in qualsiasi linguaggio di programmazione, poiché tutte le funzioni sono accessibili tramite API REST e CLI.
API: Il progetto include un'API Python, un'API R e un'API Java per comodità.
Fonte: https://mlflow.org/docs/latest/index.html
È stata trovata una vulnerabilità di path traversal in MLflow. Il path traversal è un tipo di vulnerabilità web che consente a un attaccante di accedere a file e directory situati al di fuori della directory prevista. Gli attaccanti utilizzano varie tecniche per sfruttare questa vulnerabilità e ottenere accesso non autorizzato a dati sensibili o eseguire codice arbitrario. Gli attacchi di path traversal possono essere prevenuti tramite la validazione dell'input e misure di controllo degli accessi.
La vulnerabilità è stata scoperta da Dan McInerney.
Per saperne di più: https://huntr.dev/bounties/1fe8f21a-c438-4cba-9add-e8a5dab94e28/
[CVE-2023-1177]
Path Traversal: '..\filename' nel repository GitHub mlflow/mlflow precedente alla versione 2.2.1.
Per saperne di più: https://nvd.nist.gov/vuln/detail/CVE-2023-1177
Ho creato un piccolo script Python che può essere utilizzato per testare e sfruttare la vulnerabilità.
Creerà un ID univoco per il nome del modello e poi accederà a tutti gli URL in ordine consecutivo.
