CVE-2024-1560: MLflow: path traversal allows arbitrary directory deletion

HIGH PoC AVAILABLE CISA: TRACK*
Published April 16, 2024
CISO Take

Any authenticated user—even low-privilege—on an exposed MLflow server can delete arbitrary directories on the filesystem, including production model artifacts, training checkpoints, and system paths. This bypasses the prior CVE-2023-6831 fix via double URL-decoding, meaning teams that patched once may still be vulnerable. Upgrade MLflow past 2.9.2 immediately and isolate MLflow servers behind VPN or internal-only network controls.

Risk Assessment

HIGH. CVSS 8.1 reflects a dangerous combination: network-accessible, low attack complexity, and only low privileges required. MLflow servers are routinely deployed in data science environments with minimal network segmentation—often reachable by all members of an engineering org or exposed via internal tooling. The double-decoding bypass is reliable and reproducible. Impact includes permanent destruction of trained model artifacts, experiment data, and pipeline configurations. The bypass of a prior patch (CVE-2023-6831) signals active researcher attention to this attack surface and increases the likelihood of weaponized exploits.

Affected Systems

Package Ecosystem Vulnerable Range Patched
mlflow pip No patch
25.8K OpenSSF 4.7 624 dependents Pushed yesterday 24% patched ~64d to patch Full package profile →

Do you use mlflow? You're affected.

Severity & Risk

CVSS 3.1
8.1 / 10
EPSS
0.1%
chance of exploitation in 30 days
Higher than 28% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Trivial
Exploitation Confidence
medium
CISA SSVC: Public PoC
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, CISA SSVC, EPSS, trickest/cve, and Nuclei templates.

Attack Surface

AV AC PR UI S C I A
AV Network
AC Low
PR Low
UI None
S Unchanged
C None
I High
A High

Recommended Action

6 steps
  1. PATCH

    Upgrade MLflow beyond version 2.9.2 immediately—this is the definitive fix.

  2. NETWORK

    Restrict MLflow server access to trusted IPs and VPN segments; never expose the MLflow UI or API to the public internet.

  3. FILESYSTEM

    Run the MLflow process as a low-privilege OS user scoped only to the artifact root; use containers or chroot to enforce filesystem boundaries.

  4. MONITOR

    Alert on DELETE requests to /api/2.0/mlflow-artifacts/ endpoints containing encoded characters (%25, %2F, or double-encoded sequences)—these are strong indicators of traversal attempts.

  5. BACKUPS

    Implement immutable or versioned backups of all artifact storage directories so that a deletion event does not result in irreversible loss.

  6. AUDIT

    Review MLflow access logs retroactively for suspicious DELETE calls with unusual path patterns to identify potential prior exploitation.

CISA SSVC Assessment

Decision Track*
Exploitation poc
Automatable No
Technical Impact partial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

Classification

Compliance Impact

This CVE is relevant to:

EU AI Act
Art. 9 - Risk management system for high-risk AI
ISO 42001
A.6.2.6 - AI system security and resilience
NIST AI RMF
MANAGE-2.2 - Mechanisms to sustain value of deployed AI systems
OWASP LLM Top 10
LLM05 - Supply Chain Vulnerabilities

Frequently Asked Questions

What is CVE-2024-1560?

Any authenticated user—even low-privilege—on an exposed MLflow server can delete arbitrary directories on the filesystem, including production model artifacts, training checkpoints, and system paths. This bypasses the prior CVE-2023-6831 fix via double URL-decoding, meaning teams that patched once may still be vulnerable. Upgrade MLflow past 2.9.2 immediately and isolate MLflow servers behind VPN or internal-only network controls.

Is CVE-2024-1560 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2024-1560, increasing the risk of exploitation.

How to fix CVE-2024-1560?

1. PATCH: Upgrade MLflow beyond version 2.9.2 immediately—this is the definitive fix. 2. NETWORK: Restrict MLflow server access to trusted IPs and VPN segments; never expose the MLflow UI or API to the public internet. 3. FILESYSTEM: Run the MLflow process as a low-privilege OS user scoped only to the artifact root; use containers or chroot to enforce filesystem boundaries. 4. MONITOR: Alert on DELETE requests to /api/2.0/mlflow-artifacts/ endpoints containing encoded characters (%25, %2F, or double-encoded sequences)—these are strong indicators of traversal attempts. 5. BACKUPS: Implement immutable or versioned backups of all artifact storage directories so that a deletion event does not result in irreversible loss. 6. AUDIT: Review MLflow access logs retroactively for suspicious DELETE calls with unusual path patterns to identify potential prior exploitation.

What systems are affected by CVE-2024-1560?

This vulnerability affects the following AI/ML architecture patterns: MLflow experiment tracking servers, MLflow Model Registry, training pipelines, artifact stores, MLOps CI/CD pipelines.

What is the CVSS score for CVE-2024-1560?

CVE-2024-1560 has a CVSS v3.1 base score of 8.1 (HIGH). The EPSS exploitation probability is 0.11%.

Technical Details

NVD Description

A path traversal vulnerability exists in the mlflow/mlflow repository, specifically within the artifact deletion functionality. Attackers can bypass path validation by exploiting the double decoding process in the `_delete_artifact_mlflow_artifacts` handler and `local_file_uri_to_path` function, allowing for the deletion of arbitrary directories on the server's filesystem. This vulnerability is due to an extra unquote operation in the `delete_artifacts` function of `local_artifact_repo.py`, which fails to properly sanitize user-supplied paths. The issue is present up to version 2.9.2, despite attempts to fix a similar issue in CVE-2023-6831.

Exploitation Scenario

An attacker with standard MLflow read/write access (a compromised data scientist account or a leaked service token) crafts an artifact deletion API request where the path is double-URL-encoded: %252F..%252F..%252F.. resolves to /../ after the extra unquote applied by delete_artifacts in local_artifact_repo.py. The handler decodes once, passes the path to local_file_uri_to_path which decodes again, escaping the artifact root entirely. The attacker targets the MLflow artifact delete endpoint with a traversal payload, first wiping the model registry to destroy production model artifacts ahead of a scheduled release, then targeting configuration directories to disable the ML platform—all without ever requiring elevated permissions and with no interactive steps required.

Weaknesses (CWE)

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H

Timeline

Published
April 16, 2024
Last Modified
February 3, 2025
First Seen
April 16, 2024

Related Vulnerabilities