Skip to main content

MLflow CVE-2026-2652

| EUVDEUVD-2026-30499 HIGH
Authentication Bypass by Primary Weakness (CWE-305)
2026-05-15 @huntr_ai GHSA-75cm-x2w3-8mgf
8.6
CVSS 3.0 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Identify MLflow server with auth enabled
  2. Delivery
    Send unauthenticated POST to /ajax-api/3.0/jobs/*
  3. Exploit
    Bypass FastAPI authentication middleware
  4. Execution
    Submit malicious job or read results
  5. Persist
    Inject arbitrary trace data via /v1/traces
  6. Impact
    Compromise experiment integrity and exfiltrate data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Primary weakness mitigation
Exploitation Conditions

Requires MLflow server version 3.9.0 or earlier started with --app-name basic-auth flag (authentication explicitly enabled) AND served via uvicorn ASGI server. Network-accessible deployment (typically listening on port 5000 or behind reverse proxy) where FastAPI-routed endpoints are reachable. Default MLflow installations without --app-name basic-auth are not vulnerable as no authentication bypass occurs when authentication is not configured. Flask-only deployments (without FastAPI routes) are not affected. The vulnerability is specific to the architectural combination of enabled authentication plus ASGI/FastAPI serving mode where the _find_fastapi_validator() function exists but returns None for non-gateway routes.

Impact

High real-world risk despite absence of EPSS/KEV data. CVSS 8.6 (AV:N/AC:L/PR:N/UI:N) accurately reflects the severity - remote unauthenticated exploitation against network-accessible MLflow deployments with no attack complexity. The vulnerability affects organizations that explicitly enabled authentication (--app-name basic-auth), believing their deployment was secured, creating a false sense of security. Impact includes medium confidentiality breach (reading job results), high integrity compromise (submitting/canceling jobs, injecting trace data into experiments), and low availability impact (job cancellation). The presence of a vendor-released patch (3.10.0) with detailed commit evidence and comprehensive test coverage confirms both the vulnerability's validity and remediability. MLflow's role in ML ops pipelines means this could expose proprietary model training data, experiment parameters, and potentially provide lateral movement opportunities in data science infrastructure. No public exploit code identified but the commit diff provides complete implementation details making weaponization trivial for skilled attackers.

Exploit ScenarioDerived

An external attacker scans for MLflow servers on port 5000 (default) and identifies a deployment with authentication enabled via 401 responses on Flask routes. Testing /ajax-api/3.0/jobs/search with a POST request bypasses authentication and returns active ML training jobs. The attacker submits a malicious job via /ajax-api/3.0/jobs/create that exfiltrates model training data to an external endpoint, reads proprietary hyperparameter configurations from existing jobs, cancels a critical production model training pipeline causing operational disruption, and injects false trace data via /v1/traces to pollute experiment tracking and corrupt model provenance records. No authentication credentials required for complete compromise of Job API and telemetry ingestion functions.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – May 15, 2026

Authentication bypass in MLflow 3.9.0 and earlier allows unauthenticated remote attackers to access protected Job API and OpenTelemetry trace ingestion endpoints when the server runs with basic-auth enabled via uvicorn/ASGI. Attackers can submit jobs, read results, cancel operations, and inject trace data without credentials. The FastAPI permission middleware incorrectly enforced authentication only on /gateway/ routes, leaving /ajax-api/3.0/jobs/* and /v1/traces unprotected due to architectural mismatch between Flask and FastAPI authentication mechanisms. Fixed in version 3.10.0 with GitHub commit bb62e77 adding proper validators for all FastAPI routes.

RemediationAI

Upgrade to MLflow version 3.10.0 or later, which adds proper authentication validators for all FastAPI routes via commit bb62e773263c14e9ba4d1a82fe72d0de2442c6aa. The fix implements _get_require_authentication_validator() for Job and Assistant APIs (enforces authentication without additional permission checks) and _get_otel_validator() for trace ingestion (validates X-Mlflow-Experiment-Id header and enforces experiment-level UPDATE permissions). If immediate upgrade is not feasible, implement network-level access controls to restrict /ajax-api/3.0/jobs/*, /ajax-api/3.0/mlflow/assistant/*, and /v1/traces endpoints to trusted internal networks only using firewall rules or reverse proxy URL filtering - note this prevents legitimate remote API usage and breaks distributed ML workflows. Alternatively, deploy MLflow without authentication (--app-name basic-auth disabled) if operating in a trusted network perimeter, accepting the trade-off of no application-layer access control. Audit logs for unauthorized access to affected endpoints between deployment date and patch application, searching for POST/GET requests to /ajax-api/3.0/jobs/* and /v1/traces from unexpected source IPs or without Authorization headers. Review https://github.com/mlflow/mlflow/commit/bb62e773263c14e9ba4d1a82fe72d0de2442c6aa for complete technical details.

Affected VersionsENISA

mlflow/mlflow unspecified <3.10.0

Affected Packages

pypi mlflow fix: 3.10.0, 3.11.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 is a machine learning lifecycle platform that combines Flask (WSGI) and FastAPI (ASGI) frameworks. The vulnerability stems from CWE-305 (Authentication Bypass by Primary Weakness) in the authentication middleware layer. When MLflow server starts with --app-name basic-auth and serves via uvicorn, the _find_fastapi_validator() function was designed to return route-specific authorization validators but only handled /gateway/ prefixed paths. The Job API (/ajax-api/3.0/jobs/*), MLflow Assistant API (/ajax-api/3.0/mlflow/assistant), and OpenTelemetry trace ingestion endpoints (/v1/traces) existed in the FastAPI routing layer but lacked corresponding validators, causing the middleware to skip authentication entirely for these routes. The architectural gap between Flask's authentication model and FastAPI's dependency injection system created this security hole where FastAPI routes inherited no default authentication requirement.

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

NVD PRIMARY 8.6 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L
Red Hat 8.6 HIGH

Primary rating from NVD.

CVSS VectorNVD

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

Lifecycle Timeline

2
Patch available
May 15, 2026 - 04:16 EUVD
CVE Published
May 15, 2026 - 02:13 nvd
HIGH 8.6

DescriptionCVE.org

A vulnerability in mlflow/mlflow versions 3.9.0 and earlier allows unauthenticated access to certain FastAPI routes when the server is started with authentication enabled (--app-name basic-auth) and served via uvicorn (ASGI). The FastAPI permission middleware only enforces authentication on /gateway/ routes, leaving other routes such as the Job API (/ajax-api/3.0/jobs/*) and the OpenTelemetry trace ingestion API (/v1/traces) unprotected. This allows unauthenticated remote attackers to submit jobs, read job results, cancel running jobs, and inject arbitrary trace data into experiments. The issue arises from an architectural mismatch between Flask and FastAPI authentication mechanisms, where the _find_fastapi_validator() function fails to handle non-/gateway/ paths, resulting in a complete authentication bypass. This vulnerability is fixed in version 3.10.0.

Executive ViewAI

Why It Matters

MLflow versions 3.9.0 and earlier contain an authentication bypass vulnerability (CVE-2026-2652, CVSS 8.6) that allows unauthenticated attackers to submit jobs, access job results, and inject telemetry data when basic authentication is enabled. Organizations running MLflow as an ML operations platform face direct risk of unauthorized job execution and data manipulation without credential requirements, potentially compromising model training pipelines and observability integrity.

Business Impact: High
Compensating Controls

Vendor-released patch: MLflow 3.10.0 or later. If immediate patching is not feasible: disable basic-auth until upgrade is completed and implement network-layer access controls restricting /ajax-api/3.0/jobs/* and /v1/traces endpoints to trusted internal networks only; monitor endpoint access logs for suspicious unauthenticated requests.

Threat Intelligence Overview

EPSS Score
0.1%
Top 75% exploitable
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA POC (1) Vendor 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 HIGH
CISA KEV No
Public POC Yes
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

63
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +43
PoC: +20
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