Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain valid MLflow user credentials
-
DeliveryAuthenticate to self-hosted MLflow tracking server
-
ExploitIssue SearchModelVersions REST GET or GraphQL query with broad or empty filter
-
ExecutionReceive unfiltered model version response bypassing per-model permission checks
-
PersistExtract model names, source artifact URIs, version tags, and descriptions
-
ImpactLeverage metadata to identify sensitive internal storage paths or proprietary model details
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Access control enforcement
MITRE ATT&CK
1 technique across 1 tactic: Defense Evasion The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Three concrete conditions must be simultaneously true: (1) MLflow is deployed in self-hosted mode with basic HTTP authentication explicitly enabled via the |
| Impact | CVSS 6.5 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) accurately reflects the threat profile: network-reachable, low complexity, requires one valid credential (PR:L), no user interaction, scoped to confidentiality only. The high confidentiality impact (C:H) is justified because source artifact URIs may reveal internal storage paths (S3 buckets, GCS paths, NFS mounts), and model version tags and descriptions may contain proprietary training data references or business-sensitive details. No KEV listing and no public exploit identified at time of analysis; EPSS data was not provided in the input. Real-world risk is highest in multi-tenant enterprise self-hosted deployments where organizational boundaries between ML teams are enforced via MLflow's permission model - in those environments, any authenticated insider or compromised account effectively nullifies tenant isolation for the model registry. Risk is substantially lower for single-tenant or internal-only deployments where all authenticated users are implicitly trusted. The CVSS score of 6.5 is an appropriate representation; this is not a case of inflated score versus low real-world risk - the gap is deployment-context dependent. |
| Exploit ScenarioDerived | An authenticated low-privilege user - for example, a data scientist granted READ access to only their team's models - issues a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 21, 2026
Missing post-response authorization filtering in MLflow's self-hosted server exposes all registered model version metadata to any authenticated user, regardless of their per-model permission level. Both the REST API endpoint SearchModelVersions and the GraphQL query mlflowSearchModelVersions were absent from the authorization middleware chains in versions up to 3.9.0, allowing a low-privilege authenticated user to enumerate model names, version descriptions, source artifact URIs, tags, and other metadata across all registered models in multi-tenant deployments. No public exploit identified at time of analysis; the vendor-released patch is confirmed in version 3.10.0.
RemediationAI
Upgrade to MLflow 3.10.0, which is the vendor-released patch confirmed by the upstream commit. The fix registers SearchModelVersions into AFTER_REQUEST_HANDLERS with a new filter_search_model_versions function that filters returned model versions based on the authenticated user's registered model permissions, and adds mlflowSearchModelVersions to the GraphQL _post_resolve pipeline with equivalent filtering logic. The fix commit is at https://github.com/mlflow/mlflow/commit/6989066af33fdcb03588fd71a1a67f8fc5ef12c9. If immediate upgrade is not possible, a compensating control is to place the MLflow tracking server behind a network perimeter accessible only to fully trusted users, which reduces the attacker pool but does not eliminate the authorization gap - any user who can authenticate retains full enumeration capability. A second compensating control is to block or rewrite requests to /ajax-api/2.0/mlflow/model-versions/search and the GraphQL endpoint at a reverse proxy layer; this prevents exploitation at the cost of disabling legitimate model version search functionality for all users.
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's self-hosted tracking server implements basic HTTP authentication via the mlflow.server.auth module. Authorization is enforced through two complementary hooks: BEFORE_REQUEST_VALIDATORS (pre-request permission checks) and AFTER_REQUEST_HANDLERS (post-response result filtering). The fix commit confirms that SearchModelVersions was absent from both the BEFORE_REQUEST_VALIDATORS and AFTER_REQUEST_HANDLERS registries, meaning no pre-check blocked the request and no filter_search_model_versions function was applied to strip unauthorized model versions from the response. For the GraphQL surface, GraphQLAuthorizationMiddleware maintained a PROTECTED_FIELDS list and a resolve() pipeline, but mlflowSearchModelVersions was missing from PROTECTED_FIELDS and no _post_resolve filtering existed. The root cause is CWE-284 (Improper Access Control) - a missing enforcement point on a data retrieval path, not a logic bypass or injection. The affected CPE is cpe:2.3:a:mlflow:mlflow/mlflow:*:*:*:*:*:*:*:*, covering all versions through 3.9.0 on the self-hosted deployment path.
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:N/S:U/C:H/I:N/A:N
Primary rating from Vendor (huntr_ai).
CVSS VectorVendor: huntr_ai
Lifecycle Timeline
1DescriptionCVE.org
In mlflow/mlflow versions up to 3.9.0, the SearchModelVersions REST API endpoint and the mlflowSearchModelVersions GraphQL query lack proper per-model authorization checks when basic authentication is enabled. This allows any authenticated user to enumerate all model versions across all registered models, regardless of their permission level. The issue arises due to the absence of SearchModelVersions in the BEFORE_REQUEST_VALIDATORS and AFTER_REQUEST_HANDLERS for the REST API, and its omission from GraphQLAuthorizationMiddleware.PROTECTED_FIELDS for GraphQL. This vulnerability can expose sensitive information such as model names, version descriptions, source URIs, tags, and other metadata, potentially revealing proprietary or confidential details in multi-tenant environments. The issue is resolved 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.
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.
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-31210
GHSA-w5xq-c4pf-ghq7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB