Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to MLflow
-
DeliveryCreate webhook with internal/metadata URL
-
ExploitTrigger MLflow event
-
ExecutionBackend sends SSRF request
-
ImpactExfiltrate credentials/data
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Attacker must possess valid MLflow credentials with permissions to create webhooks via the MLflow API or UI (PR:L - low privileges required). The target MLflow installation must be running a vulnerable version (prior to 3.9.0) with webhook functionality enabled and accessible. Exploitation requires network connectivity from the MLflow server to the target SSRF destination - cloud metadata endpoints (169.254.169.254) for credential theft, internal services for reconnaissance, or external attacker-controlled servers for data exfiltration. No user interaction required (UI:N). The vulnerability is exploitable against default MLflow configurations that do not implement external egress filtering. Limiting factors: requires authenticated access to MLflow, not exploitable by anonymous attackers; impact scope depends on MLflow server's network position and IAM role permissions; organizations using network segmentation or restrictive egress policies may already block exploitation paths to critical internal targets. |
| Impact | CVSS 7.1 (High) with network vector (AV:N), low complexity (AC:L), low privileges required (PR:L), and high confidentiality impact (C:H) accurately reflects the technical severity. However, real-world exploitation risk is moderated by the authentication requirement - attackers need valid MLflow credentials with webhook creation permissions. The SSRF can access cloud metadata services (AWS/Azure/GCP instance metadata at 169.254.169.254), potentially stealing IAM credentials, API keys, and environment variables. Internal network scanning and service enumeration are also possible. No CISA KEV listing indicates no widespread exploitation detected, and EPSS data is not provided but likely low given the authentication barrier and specific product targeting. The vulnerability requires MLflow to be deployed with webhook functionality enabled - organizations not using MLflow webhooks are unaffected even on vulnerable versions. Patch availability since version 3.9.0 with clear commit evidence (64aa0ab) reduces ongoing risk for maintained deployments. Priority should be elevated for MLflow instances handling sensitive workloads in cloud environments with IAM role-based authentication, where metadata endpoint access could enable privilege escalation. Lower priority for air-gapped or network-isolated MLflow deployments where SSRF impact is constrained. |
| Exploit ScenarioDerived | An authenticated attacker with MLflow access creates a malicious webhook pointing to http://169.254.169.254/latest/meta-data/iam/security-credentials/. When an MLflow event triggers the webhook (model registration, experiment completion), the MLflow backend sends an HTTP POST request to the AWS EC2 metadata service. The attacker receives the response containing temporary IAM credentials through webhook delivery logs or by pointing the webhook to an attacker-controlled external server that logs the forwarded request. With stolen IAM credentials, the attacker escalates privileges in the AWS environment, accesses S3 buckets containing training data, or pivots to other cloud resources. Alternatively, the attacker enumerates internal services by creating webhooks to internal IP ranges and observing response timing or error messages to map the internal network topology. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 11, 2026
Server-Side Request Forgery in MLflow allows authenticated users to force the MLflow backend to send HTTP requests to arbitrary URLs, including internal services and cloud metadata endpoints (e.g., AWS EC2 metadata at 169.254.169.254). Affects MLflow versions prior to 3.9.0. The webhook creation endpoint accepts unvalidated user-controlled URLs that are later used in HTTP POST requests, enabling cloud credential theft, internal network reconnaissance, and data exfiltration. Vendor-released patch available in MLflow 3.9.0, confirmed by GitHub commit 64aa0ab. No active exploitation confirmed (not in CISA KEV), but publicly disclosed with detailed technical analysis from huntr.com.
RemediationAI
Upgrade to MLflow version 3.9.0 or later, which implements comprehensive SSRF protection including HTTPS-only URL scheme validation, hostname resolution checks, and IP address classification to block private, loopback, link-local, and reserved addresses. The fix is confirmed in commit 64aa0ab7207f9c649b59ba1a5f40d82196817389 available at https://github.com/mlflow/mlflow/commit/64aa0ab7207f9c649b59ba1a5f40d82196817389. If immediate patching is not feasible, implement network-level controls: deploy egress filtering rules to block MLflow server outbound connections to RFC1918 private ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback (127.0.0.0/8), and cloud metadata endpoints (169.254.169.254/32), though this may break legitimate webhook integrations requiring internal network access. Restrict webhook creation permissions to highly trusted administrative users only via MLflow's permission model. Monitor MLflow logs for webhook creation events and HTTP request patterns targeting suspicious destinations. Note that the workaround firewall rules must block DNS resolution to private IPs, not just direct IP literals, as attackers can use DNS rebinding or public domains resolving to internal addresses. Audit existing webhooks for suspicious URLs using the MLflow API or database inspection before deploying the patch, as the fix validates URLs at delivery time for pre-existing webhooks.
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 lifecycles, including experiment tracking and model deployment. The vulnerability exists in the webhook delivery mechanism implemented in Python. The _create_webhook() function in mlflow/server/handlers.py accepts a URL parameter from authenticated users without validation. This URL is stored and later used by _send_webhook_request() in mlflow/webhooks/delivery.py to send HTTP POST requests. The lack of input sanitization against CWE-918 (Server-Side Request Forgery) allows attackers to specify internal network addresses (RFC1918 private ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback addresses (127.0.0.0/8, ::1), link-local addresses (169.254.0.0/16 including cloud metadata endpoints), and other non-routable ranges. The fix in version 3.9.0 implements URL scheme validation (HTTPS-only), hostname resolution via socket.getaddrinfo(), and IP address classification using Python's ipaddress module to reject non-global addresses using the is_global property. An environment variable MLFLOW_WEBHOOK_ALLOW_PRIVATE_IPS provides override capability for local development environments.
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:L/A:N
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
2DescriptionCVE.org
A Server-Side Request Forgery (SSRF) vulnerability exists in MLflow versions prior to 3.9.0. The _create_webhook() function in mlflow/server/handlers.py accepts a user-controlled url parameter without validation, and the _send_webhook_request() function in mlflow/webhooks/delivery.py sends HTTP POST requests to this attacker-controlled URL. This allows an authenticated attacker to force the MLflow backend to send HTTP requests to internal services, cloud metadata endpoints, or arbitrary external servers. The lack of input sanitization, URL scheme filtering, or allowlist validation on the webhook URL enables exploitation, potentially leading to cloud credential theft, internal network access, and data exfiltration.
Blast Radius
ecosystem impact- 5 pypi packages depend on mlflow (5 direct, 0 indirect)
Ecosystem-wide dependent count for version 3.9.0.
Executive ViewAI
MLflow versions before 3.9.0 contain a server-side request forgery (SSRF) vulnerability in the webhook creation endpoint that allows authenticated users to force the backend to send requests to arbitrary URLs, including cloud metadata services and internal infrastructure. This creates direct exposure to credential theft, unauthorized access to internal systems, and data exfiltration for any organization running vulnerable MLflow instances.
Vendor-released patch: MLflow 3.9.0. If patch cannot be deployed immediately: (1) Restrict network egress from MLflow servers to only required external endpoints using firewall rules; (2) Block access to metadata endpoints (169.254.169.254 and similar) at the network layer; (3) Limit webhook creation permissions to trusted administrators only through role-based access controls; (4) Monitor outbound HTTP/HTTPS traffic from MLflow for anomalous destinations.
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
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
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-29093
GHSA-65h7-c7c4-mghx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB