Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate as low-privilege MLflow user
-
DeliveryEnumerate target experiment IDs and artifact paths
-
ExploitPOST to /mlflow-artifacts/mpu/create bypassing authz check
-
InstallComplete multipart upload overwriting victim's model.pkl
-
C2Wait for victim to mlflow.pyfunc.load_model
-
ExecutePickle deserialization executes attacker code
-
ImpactLateral movement in victim's ML pipeline
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The MLflow tracking server must be started with the --serve-artifacts flag AND have the built-in authentication module enabled to create a multi-user authorization boundary worth bypassing; the attacker must hold valid credentials for any low-privilege account on that server (PR:L), must know or guess the target experiment ID and artifact path to overwrite, and must wait for a victim user or automation pipeline to load the poisoned model (UI:R) before arbitrary code execution materializes. Single-user MLflow installs, deployments that do not enable --serve-artifacts, and deployments fronted by an external authorization proxy that enforces per-experiment ACLs on /mlflow-artifacts/mpu/* are not exploitable. |
| Impact | The CVSS 9.0 score is driven by network attack vector, low complexity, scope change (one user's credentials affect another user's resources), and total CIA impact, which together describe a realistic cross-tenant compromise on a multi-user MLflow deployment. However, several signals temper the urgency: PR:L means an attacker must already hold a valid MLflow account, UI:R requires that a victim eventually load the poisoned model for code execution to land, and the deployment must actually run with --serve-artifacts and the built-in auth plugin enabled - a non-default combination. EPSS at 0.05% and SSVC Automatable:no indicate the issue is not suited to mass scanning, and there is no CISA KEV listing, so the realistic threat is targeted abuse inside shared ML platforms rather than internet-wide exploitation. Note one data inconsistency worth verifying with the vendor: the description states the issue is resolved in 3.10.0 while also citing affected versions <=3.10.1.dev0 - EUVD aligns with the <3.10.0 boundary, so 3.10.0 should be treated as the fixed line. |
| Exploit ScenarioDerived | An attacker with a low-privilege account on a shared MLflow tracking server running --serve-artifacts issues a POST to /api/2.0/mlflow-artifacts/mpu/create/{victim_experiment_id}/artifacts/model with a path such as python_model.pkl, then completes the multipart upload to overwrite a colleague's registered model with a malicious pickle payload. When a data scientist or CI pipeline subsequently calls mlflow.pyfunc.load_model on that model, the pickle deserializes and executes the attacker's code in the victim's context - a public proof-of-concept demonstrating the 403-bypass on these MPU routes is referenced in the huntr report. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 08, 2026
Cross-user artifact overwrite in MLflow versions prior to 3.10.0 allows authenticated users with --serve-artifacts mode enabled to abuse unprotected multipart upload (MPU) endpoints under /mlflow-artifacts/mpu/* and tamper with models owned by other users, enabling model supply chain poisoning and arbitrary code execution when poisoned models are deserialized. The SSVC framework classifies this as having a public proof-of-concept with total technical impact, though EPSS exploitation probability is currently only 0.05% (16th percentile) and no public exploit identified at time of analysis as actively weaponized.
RemediationAI
Vendor-released patch: upgrade to MLflow 3.10.0 or later, which adds the missing /mlflow-artifacts/mpu/ path prefixes to the proxy artifact path detection and wires POST on those routes to validate_can_update_experiment_artifact_proxy (see commit https://github.com/mlflow/mlflow/commit/d7290811d8f3c95366d80109424edc1fb1ad966f). Where immediate upgrade is not possible, the most effective compensating controls are to disable --serve-artifacts and front artifact storage with a separately authenticated object store (trade-off: clients must be reconfigured with direct storage credentials), or to block POST requests to /api/2.0/mlflow-artifacts/mpu/* and /ajax-api/2.0/mlflow-artifacts/mpu/* at a reverse proxy with per-user ACLs (trade-off: multipart uploads of large artifacts will fail and clients fall back to single-part uploads or break entirely). Tightening user provisioning so that only trusted accounts exist on shared trackers, and reviewing recent artifact writes for cross-experiment anomalies, reduces residual risk during the patch window.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in pypi, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MLflow is an open-source machine learning lifecycle platform whose tracking server can be run with the --serve-artifacts flag to proxy artifact storage through the server. The vulnerability is a CWE-862 Missing Authorization in the auth module (mlflow/server/auth/__init__.py), where the _is_proxy_artifact_path helper failed to recognize the multipart upload subpaths (mpu/create, mpu/complete, mpu/abort) under both /api/2.0/mlflow-artifacts/ and /ajax-api/2.0/mlflow-artifacts/ as proxy artifact paths, and the _get_proxy_artifact_validator did not map POST requests on those routes to validate_can_update_experiment_artifact_proxy. As a result, requests to MPU endpoints bypassed the per-experiment permission check that protects the rest of the artifact proxy surface, even though authentication itself was still required.
Know when Mlflow gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
Primary rating from Vendor (huntr_ai).
CVSS VectorVendor: huntr_ai
Lifecycle Timeline
1DescriptionCVE.org
A vulnerability in MLflow versions <=3.10.1.dev0 allows unauthorized access to multipart upload (MPU) endpoints when the --serve-artifacts mode is enabled. The authorization logic does not enforce resource-level permission checks for /mlflow-artifacts/mpu/* endpoints, enabling attackers to overwrite artifacts belonging to other users. This can lead to unauthorized cross-user writes, model supply chain poisoning, and arbitrary code execution when compromised models are loaded. The issue is resolved in version 3.10.0.
Executive ViewAI
MLflow versions prior to 3.10.0 contain a critical authorization vulnerability (CVE-2026-2651, CVSS 9.0) in artifact serving that allows authenticated users to modify models owned by other users. Although proof-of-concept code exists publicly, current exploitation likelihood is minimal (0.1% EPSS). If exploited, attackers could poison production models before deployment, enabling supply chain compromise and arbitrary code execution across dependent systems.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Server-side request forgery in MLflow before 3.15.0 lets remote unauthenticated attackers coerce the server into making
A path traversal vulnerability exists in mlflow/mlflow version 2.15.1. Rated high severity (CVSS 7.5), this vulnerabilit
Absolute Path Traversal in GitHub repository mlflow/mlflow prior to 2.5.0. Rated critical severity (CVSS 10.0), this vul
Unauthenticated remote code execution in MLflow 3.12.0rc0 through 3.16.x lets any network caller reach the tracking serv
MLflow's FastAPI job endpoints bypass basic-auth entirely, allowing network attackers to submit and execute jobs without
A malicious user could use this issue to get command execution on the vulnerable machine and get access to data & models
A malicious user could use this issue to access internal HTTP(s) servers and in the worst case (ie: aws instance) it cou
An attacker is able to arbitrarily create an account in MLflow bypassing any authentication requirment. Rated critical s
An attacker can overwrite any file on the server hosting MLflow without any authentication. Rated critical severity (CVS
Path Traversal: '\..\filename' in GitHub repository mlflow/mlflow prior to 2.3.1. Rated critical severity (CVSS 9.8), th
Path Traversal: '\..\filename' in GitHub repository mlflow/mlflow prior to 2.2.1. Rated critical severity (CVSS 9.8), th
Insufficient sanitization in MLflow leads to XSS when running a recipe that uses an untrusted dataset. Rated critical se
EUVD-2026-31642
GHSA-8c7q-86fq-vvmh
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB