Summary
CVE-2026-64849 is a critical Server-Side Request Forgery (SSRF) vulnerability in MLflow’s webhook delivery mechanism, affecting the unauthenticated POST /api/2.0/mlflow/webhooks/{id}/test endpoint. The endpoint validates a webhook’s original URL but does not re-validate or pin the resolved address once an HTTP redirect is followed, allowing attackers to reach internal services or cloud metadata endpoints and read back the response. The flaw carries a CVSS v3.1 base score of 9.3 (Critical).
Technical details
- Root cause:
_validate_webhook_url()checks only the original, attacker-supplied webhook URL; the delivery logic that actually performs the HTTP request follows redirects and re-resolves hostnames without pinning the previously validated address (time-of-check/time-of-use gap). - Trigger conditions: An attacker registers or tests a webhook pointing to a public HTTPS endpoint they control, which passes the initial validation, then responds with a 302 (or similar) redirect to an internal address such as a cloud metadata service (e.g., 169.254.169.254) or localhost.
- Attack vector: Network, no authentication or privileges required, no user interaction — many default MLflow Tracking Server deployments run without authentication enabled.
- Impact: The
/testendpoint reflects the upstream response status and body back to the caller, producing an unauthenticated full-read SSRF capable of exfiltrating internal service data or cloud metadata (e.g., instance credentials). DNS rebinding can also be used to exploit the same validation gap.
Affected software
- MLflow versions prior to 3.15.0
Severity
- CVSS v3.1 Base Score: 9.3 (Critical)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N
Mitigation and recommended actions
- Immediate: Upgrade MLflow to version 3.15.0 or later, which pins the validated address at connection time.
- If immediate patching is not possible: Enable authentication on the MLflow Tracking Server (default deployments run unauthenticated), restrict network access to the tracking server and its webhook management API, and block outbound requests from the MLflow host to internal/link-local address ranges (including the 169.254.169.254 metadata address) at the network or egress-filtering layer.
How IONIX identifies potentially affected assets
IONIX matches the following signals against data already collected when it crawled the asset; identifying the technology sends no request beyond that crawl.
- Page title:
MLflow

