Skip to main content

MLflow CVE-2026-2734

| EUVDEUVD-2026-31210 MEDIUM
Improper Access Control (CWE-284)
2026-05-21 @huntr_ai GHSA-w5xq-c4pf-ghq7
6.5
CVSS 3.0 · Vendor: huntr_ai
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain valid MLflow user credentials
  2. Delivery
    Authenticate to self-hosted MLflow tracking server
  3. Exploit
    Issue SearchModelVersions REST GET or GraphQL query with broad or empty filter
  4. Execution
    Receive unfiltered model version response bypassing per-model permission checks
  5. Persist
    Extract model names, source artifact URIs, version tags, and descriptions
  6. Impact
    Leverage 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 --app-name basic-auth flag or equivalent mlflow.server.auth configuration - default MLflow deployments without auth are unaffected by this specific bypass; (2) the attacker holds at least one valid authenticated user account on the server (CVSS PR:L confirmed); (3) the MLflow version is 3.9.0 or earlier. Exploitation is strictly limited to information disclosure - no write, delete, or availability impact is possible through this vector. The vulnerability does not bypass pre-request authentication, only post-response result filtering, so unauthenticated access remains blocked. Non-default configuration is required: basic auth must be explicitly configured, making this a meaningful limiting factor for risk prioritization.

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 /ajax-api/2.0/mlflow/model-versions/search request with no model name filter, or submits a mlflowSearchModelVersions GraphQL query. Because no post-response filtering is applied, the server returns metadata for all model versions across every registered model in the instance, including those belonging to other teams. The attacker harvests model names, source artifact URIs (which may point to internal cloud storage paths), version tags, and descriptions, enabling them to map the organization's entire ML model inventory without authorization.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

mlflow/mlflow unspecified <3.10.0

Affected Packages

pypi mlflow fix: 3.10.0
euvd mlflow_mlflow_unspecified fix: 3.10.0

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

Vendor (huntr_ai) PRIMARY 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Red Hat 6.5 MEDIUM

Primary rating from Vendor (huntr_ai).

CVSS VectorVendor: huntr_ai

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
May 21, 2026 - 06:01 EUVD

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 2 pypi packages depend on mlflow (2 direct, 0 indirect)

Ecosystem-wide dependent count for version 3.10.0.

Threat Intelligence Overview

EPSS Score
0.0%
Top 93% exploitable
Social Media
1
Sightings
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor CIRCL GitHub

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

32
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

More in Mlflow

View all
CVE-2026-64849 CRITICAL POC
9.3 Aug 17

Server-side request forgery in MLflow before 3.15.0 lets remote unauthenticated attackers coerce the server into making

CVE-2024-8859 HIGH POC
7.5 Mar 20

A path traversal vulnerability exists in mlflow/mlflow version 2.15.1. Rated high severity (CVSS 7.5), this vulnerabilit

CVE-2023-3765 CRITICAL POC
10.0 Jul 19

Absolute Path Traversal in GitHub repository mlflow/mlflow prior to 2.5.0. Rated critical severity (CVSS 10.0), this vul

CVE-2026-116692 CRITICAL POC
9.8 Oct 27

Unauthenticated remote code execution in MLflow 3.12.0rc0 through 3.16.x lets any network caller reach the tracking serv

CVE-2026-0545 CRITICAL POC
9.8 Apr 03

MLflow's FastAPI job endpoints bypass basic-auth entirely, allowing network attackers to submit and execute jobs without

CVE-2023-6975 CRITICAL POC
9.8 Dec 20

A malicious user could use this issue to get command execution on the vulnerable machine and get access to data & models

CVE-2023-6974 CRITICAL POC
9.8 Dec 20

A malicious user could use this issue to access internal HTTP(s) servers and in the worst case (ie: aws instance) it cou

CVE-2023-6014 CRITICAL POC
9.8 Nov 16

An attacker is able to arbitrarily create an account in MLflow bypassing any authentication requirment. Rated critical s

CVE-2023-6018 CRITICAL POC
9.8 Nov 16

An attacker can overwrite any file on the server hosting MLflow without any authentication. Rated critical severity (CVS

CVE-2023-2780 CRITICAL POC
9.8 May 17

Path Traversal: '\..\filename' in GitHub repository mlflow/mlflow prior to 2.3.1. Rated critical severity (CVSS 9.8), th

CVE-2023-1177 CRITICAL POC
9.8 Mar 24

Path Traversal: '\..\filename' in GitHub repository mlflow/mlflow prior to 2.2.1. Rated critical severity (CVSS 9.8), th

CVE-2024-27133 CRITICAL POC
9.6 Feb 23

Insufficient sanitization in MLflow leads to XSS when running a recipe that uses an untrusted dataset. Rated critical se

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy