Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconReach unauthenticated webhook test endpoint
-
DeliverySubmit attacker-controlled webhook URL
-
ExploitPass public-IP validation check
-
InstallRedirect/rebind to 169.254.169.254
-
C2Server follows redirect, re-resolves host
-
ExecuteRead metadata response_body
-
ImpactExfiltrate cloud credentials
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 | Exploitation requires the MLflow webhooks feature and network reachability to the POST /api/2.0/mlflow/webhooks/{id}/test endpoint, which is unauthenticated (PR:N) - so no credentials are needed. The attacker must control a webhook target URL that either passes the initial _validate_webhook_url() public-IP check and then redirects to an internal address, or resolves to a public IP at validation and a private/link-local IP at delivery (DNS rebinding). Payoff is greatest when the server runs in a cloud environment exposing an instance metadata service (169.254.169.254) or has reachable internal services. Limiting factors: the target must expose the webhooks API to the attacker (internal-only deployments sharply reduce risk), a valid webhook {id} context for the test flow, and - for the credential-theft case - a cloud metadata endpoint reachable from the server; IMDSv2 or egress filtering blunts the highest-impact outcome. |
| Impact | The signals align toward genuine priority for exposed instances. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N, 9.3) indicates a network-reachable, low-complexity, unauthenticated attack with a scope change - consistent with the description's 'unauthenticated POST' endpoint and the ability to reach cross-boundary metadata services. AC:L is credible because the redirect-following path allows a trivial bypass (no DNS-rebinding infrastructure required), even though the rebinding path adds complexity. The primary limiting factor is exposure: MLflow tracking servers are frequently deployed on internal networks, so realistic risk concentrates on internet-exposed or multi-tenant deployments, especially those running in cloud environments with an instance metadata service. No KEV listing and no confirmed POC are present in the provided data, so this is not confirmed active exploitation; EPSS was not supplied. SSVC was not provided, but the technical impact is high (credential exfiltration) and the attack is plausibly automatable against exposed hosts. Net: high-priority for any cloud-hosted or externally reachable MLflow instance; lower urgency for strictly network-isolated deployments. |
| Exploit ScenarioDerived | An attacker with network access to an internet-exposed MLflow server sends POST /api/2.0/mlflow/webhooks/{id}/test pointing at an attacker-controlled host that passes the public-IP check, then HTTP-redirects (or DNS-rebinds) the delivery request to http://169.254.169.254/latest/meta-data/iam/security-credentials/. MLflow follows the redirect, re-resolves the target, and returns the metadata service's response_body to the attacker, exposing cloud IAM credentials. No POC is identified in the available data, but the low attack complexity and unauthenticated endpoint make exploitation straightforward against exposed instances. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 17, 2026
Server-side request forgery in MLflow before 3.15.0 lets remote unauthenticated attackers coerce the server into making outbound requests to internal or cloud metadata endpoints via the POST /api/2.0/mlflow/webhooks/{id}/test endpoint. Because URL validation and the actual delivery re-resolve the hostname independently and follow redirects, an attacker can bypass the public-IP check and receive the target's response_status and response_body, enabling exfiltration of cloud credentials (e.g. from 169.254.169.254). No public exploit identified at time of analysis; the CVSS 9.3 rating and scope-change flag reflect the credential-theft potential of reaching metadata services.
RemediationAI
Vendor-released patch: upgrade to MLflow 3.15.0, which adds the SSRFProtectedHTTPAdapter that pins validation to the actual connected peer IP (see GHSA-7gwp-5pfp-969j and release https://github.com/mlflow/mlflow/releases/tag/v3.15.0). If immediate upgrade is not possible, restrict network exposure of the tracking server: place MLflow behind authentication/a reverse proxy and block unauthenticated access to /api/2.0/mlflow/webhooks/* endpoints, since the vulnerable test endpoint requires no auth. For cloud deployments, enforce IMDSv2 (which requires a session token and mitigates naive metadata SSRF) and apply egress network controls that deny the server outbound access to 169.254.169.254 and RFC1918/link-local ranges - noting this can break legitimate internal integrations. Do not rely on the deployment proxy for protection, as the patched code specifically disables env proxy handling because a proxy would otherwise mask the true destination.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in pypi
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 MLOps platform (cpe:2.3:a:mlflow:mlflow) whose webhook feature performs outbound HTTP delivery to user-supplied URLs. The flaw is a classic CWE-918 (SSRF) rooted in a time-of-check/time-of-use gap: mlflow/utils/validation.py's _validate_webhook_url() resolves and checks the original hostname's IPs are public, but discards the resolved address, while mlflow/webhooks/delivery.py issues the request through requests, follows HTTP redirects, and re-resolves the hostname without pinning the validated IP. This allows two bypass techniques - a public host that HTTP-redirects to an internal address, and DNS rebinding that returns a public IP at validation time and a private/link-local IP (169.254.169.254) at request time. The upstream fix (mlflow/webhooks/ssrf.py) introduces an SSRFProtectedHTTPAdapter that validates the connected socket's peer IP (via getpeername) is globally routable immediately after connect() and before TLS/HTTP data, and sets session.trust_env=False so proxies cannot mask the true peer.
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:N/UI:N/S:C/C:H/I:L/A:N
Unauthenticated network endpoint (PR:N, AV:N); redirect-based bypass keeps AC:L; SSRF crosses a boundary (S:C); metadata response_body leak is C:H, limited internal POST is I:L, no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
MLflow is an open source AI engineering platform for agents, large language models, and machine learning models. Prior to 3.15.0, the unauthenticated POST /api/2.0/mlflow/webhooks/{id}/test endpoint calls _validate_webhook_url() in mlflow/utils/validation.py only for the original URL while mlflow/webhooks/delivery.py follows redirects and re-resolves the hostname without pinning the validated address, allowing attackers to reach internal or cloud metadata services and receive response_status and response_body. This issue is fixed in version 3.15.0.
Blast Radius
ecosystem impact- 5 pypi packages depend on mlflow (4 direct, 1 indirect)
Ecosystem-wide dependent count for version 3.15.0.
Articles & Coverage 1
Latest POC
1 public PoC link from nuclei
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
MLflow versions before 3.15.0 contain a critical server-side request forgery vulnerability allowing unauthenticated remote attackers to coerce the server into making requests to internal cloud metadata endpoints, directly enabling exfiltration of cloud credentials (AWS, Azure, GCP keys). Any organization running MLflow for model training or deployment is exposed to credential theft without requiring authentication or user interaction. This represents a direct path to cloud account compromise affecting both development and production infrastructure.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Network segmentation-deny egress from MLflow servers to 169.254.169.254 and cloud metadata service IPs; (2) WAF/reverse-proxy rules-block POST requests to /api/2.0/mlflow/webhooks paths from untrusted networks; (3) Disable webhooks-deactivate feature if operationally feasible; (4) Service account hardening-enforce least-privilege IAM policies limiting MLflow credentials to minimum required permissions; (5) Audit logging-enable cloudtrail/activity logging with real-time alerting on unexpected credential usage or API calls from MLflow service accounts.
Threat Model
3 threats: Information Disclosure, Elevation of Privilege, Tampering
7-step attack chain with trust boundaries and controls
Full threat model - attack chain, trust boundaries, controls per stage and evidence - is part of the Pro and Business plans.
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.
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
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
Insufficient sanitization in MLflow leads to XSS when running an untrusted recipe. Rated critical severity (CVSS 9.6), t
mlflow/mlflow is vulnerable to Local File Inclusion (LFI) due to improper parsing of URIs, allowing attackers to bypass
EUVD-2026-60473
GHSA-7gwp-5pfp-969j
NVD
CVE.org
CISA KEV
EPSS
Vulnrichment
VulDB
Exploit-DB