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
Share

Severity by source

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

Primary rating from NVD · only source for this CVE.

CVSS VectorNVD

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
High
Availability
Low

Lifecycle Timeline

4
Patch available
May 15, 2026 - 04:16 EUVD
Source Code Evidence Fetched
May 15, 2026 - 03:31 vuln.today
Analysis Generated
May 15, 2026 - 03:31 vuln.today
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.

AnalysisAI

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.

Technical ContextAI

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.

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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2026-55255 HIGH POC
8.4 Jun 19

Cross-user flow execution in Langflow (< 1.9.1) lets any authenticated API-key holder run another user's flow by passing

Share

CVE-2026-2652 vulnerability details – vuln.today

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