Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend CreateModelVersion POST with prompt tag
-
DeliveryBypass source validation
-
ExploitStore arbitrary filesystem path
-
ExecutionRequest artifact via GET
-
PersistServe sensitive file content
-
ImpactExfiltrate confidential data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Vulnerable MLflow server (versions ≤3.9.0) must be network-accessible to the attacker. No authentication, user interaction, or non-default configuration required-CVSS vector PR:N/UI:N confirms exploitation against default installations. The CreateModelVersion API endpoint must be reachable (standard in all MLflow deployments with model registry enabled). Attackers need ability to send HTTP POST requests to the server and subsequent GET requests to retrieve artifacts. The vulnerability requires the attacker to know or guess valid model names for the registry, though arbitrary names can be created. Exploitation is NOT limited by the mlflow.prompt.is_prompt tag being a privileged or rare feature-any request can include this tag. Filesystem paths targeted for read access must be readable by the MLflow server process user (typically the application service account). Does not require local access, SSH, or prior foothold. |
| Impact | Real-world risk is HIGH. CVSS 7.5 accurately reflects the attack surface: network-accessible (AV:N), low complexity (AC:L), no authentication required (PR:N), no user interaction (UI:N), and high confidentiality impact (C:H). Any exposed MLflow server running default configurations of versions ≤3.9.0 is vulnerable to arbitrary file read by remote attackers. The attack requires only crafting a single HTTP request with specific JSON payload-no exploit chain complexity. However, exploitation likelihood depends on MLflow server exposure: internet-facing deployments face immediate risk, while internal-only deployments require network access. No EPSS score, KEV status, or public exploit availability data provided in input, suggesting discovery through responsible disclosure via huntr.com bug bounty rather than active exploitation campaigns. The GitHub commit (6e801f4) is public and provides implementation details attackers could use to develop exploits. Defenders should prioritize this for any MLflow server handling sensitive data or deployed in multi-tenant environments, as successful exploitation grants read access to filesystem artifacts including credentials, configuration files, and private model data. |
| Exploit ScenarioDerived | An attacker identifies an internet-accessible MLflow server running version 3.9.0 through version fingerprinting. They send a CreateModelVersion HTTP POST request to the /api/2.0/mlflow/model-versions/create endpoint with JSON payload containing 'name': 'exfiltrate', 'source': '/etc/passwd', and 'tags': [{'key': 'mlflow.prompt.is_prompt', 'value': 'true'}]. The server accepts this request, storing /etc/passwd as the model version source without validation. The attacker then issues a GET request to /get-artifact or /model-versions/get-artifact endpoint referencing the created model version. The get_model_version_artifact_handler() function retrieves and returns the contents of /etc/passwd. The attacker repeats with different paths (e.g., /proc/self/environ for environment variables, application config files, SSH keys) to exfiltrate sensitive data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 11, 2026
Remote unauthenticated attackers can read arbitrary files from MLflow server filesystems in versions 3.9.0 and earlier. By submitting a CreateModelVersion request with the tag 'mlflow.prompt.is_prompt' and an arbitrary local filesystem path as the source, attackers bypass validation logic. The get_model_version_artifact_handler() function later serves files from that path without checking prompt status, enabling full confidentiality breach. Fixed in version 3.10.0 per commit 6e801f4 which blocks file:// URIs and absolute paths for prompt sources. CVSS 7.5 (High) reflects network attack vector with no authentication or user interaction required.
RemediationAI
Upgrade to MLflow version 3.10.0 or later immediately. The fix in commit 6e801f4 blocks file:// URIs and absolute paths for prompt sources and adds path traversal validation for URL-schemed sources. Installation command: pip install --upgrade mlflow>=3.10.0 (for Python environments) or update container images to mlflow:3.10.0+ tags. If immediate upgrade is not feasible, implement network-level compensating controls: (1) restrict MLflow server access to authenticated internal networks only via firewall rules or VPN-blocks remote unauthenticated attack vector but reduces legitimate external access; (2) deploy a reverse proxy (nginx/Apache) that inspects and blocks CreateModelVersion POST requests containing the 'mlflow.prompt.is_prompt' tag from untrusted sources-requires custom request filtering logic and may break legitimate prompt workflows; (3) run MLflow server processes in sandboxed containers with minimal filesystem access using read-only root filesystems and explicit volume mounts for required paths only-limits blast radius but requires infrastructure reconfiguration. All workarounds have operational trade-offs; vendor-released patch is the definitive solution. Verify fix deployment by testing that CreateModelVersion requests with prompt tags and file:// or absolute path sources return HTTP 400 errors as shown in commit tests.
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 platform for managing machine learning lifecycle, including model versioning and artifact storage. The vulnerability exists in the mlflow/server/handlers.py module's _create_model_version() function. When processing CreateModelVersion requests, MLflow conditionally validates source paths based on the presence of the 'mlflow.prompt.is_prompt' tag (CWE-22: Improper Limitation of a Pathname to a Restricted Directory). Prior to 3.10.0, the validation logic inverted the check-prompts were NOT validated while regular model versions were. Attackers exploited this by tagging requests as prompts to store arbitrary filesystem paths (e.g., /etc/passwd, file:///proc/self/environ) in the model version metadata. The separate get_model_version_artifact_handler() function retrieves and serves files from the stored source path without re-verifying prompt status or path safety, creating a path traversal vulnerability. The fix introduces explicit blocking of file:// URIs and absolute paths for prompt sources, plus path traversal validation for sources with URL schemes.
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:N/UI:N/S:U/C:H/I:N/A:N
Primary rating from Vendor (huntr_ai).
CVSS VectorVendor: huntr_ai
Lifecycle Timeline
2DescriptionCVE.org
A vulnerability in the _create_model_version() handler of mlflow/server/handlers.py in mlflow/mlflow versions 3.9.0 and earlier allows an unauthenticated remote attacker to read arbitrary files from the server's filesystem. The issue arises when a CreateModelVersion request includes the tag mlflow.prompt.is_prompt, which bypasses source path validation. This enables an attacker to store an arbitrary local filesystem path as the model version source. The get_model_version_artifact_handler() function later uses this source to serve files without verifying the model version's prompt status, leading to a complete confidentiality compromise. This issue is fixed in version 3.10.0.
Blast Radius
ecosystem impact- 2 pypi packages depend on mlflow (2 direct, 0 indirect)
Ecosystem-wide dependent count for version 3.10.0.
Executive ViewAI
MLflow versions 3.9.0 and earlier contain a critical path traversal vulnerability that allows unauthenticated remote attackers to read arbitrary files from the server's filesystem. An attacker can exploit this by crafting malicious CreateModelVersion requests to exfiltrate sensitive data such as credentials, configuration files, or intellectual property stored on the MLflow server, creating a direct confidentiality breach with no authentication barrier.
Vendor-released patch: MLflow version 3.10.0. If immediate upgrade is not possible, implement network-level controls to restrict MLflow API access to trusted internal networks only, and disable or restrict the CreateModelVersion endpoint until patching is complete. Monitor all CreateModelVersion API requests for suspicious 'mlflow.prompt.is_prompt' tag usage with file paths containing '/' or 'file://' schemes.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
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-29180
GHSA-42h5-h8qh-vv9v
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB