CVE-2026-64849 - MLflow: Unauthenticated full-read SSRF in webhook delivery: _validate_webhook_ur
CVE-2026-64849 是 MLflow 3.15.0 之前版本中的严重 SSRF 漏洞,默认配置下攻击者可利用未认证的 Webhook 测试接口和重定向绕过 IP 校验,访问云元数据及内网服务,CVSS 评分 9.3。本文分析漏洞原理、攻击场景及修复措施。
CVE-2026-64849 - MLflow: Unauthenticated full-read SSRF in webhook delivery: _validate_webhook_ur
📋 漏洞概述
MLflow 默认配置下 Webhook 测试接口存在未授权 SSRF,攻击者可利用重定向绕过 IP 校验访问内网及云元数据服务。
📋 基础信息
| 受影响版本 | MLflow < 3.15.0(mlflow server 默认配置,SQLite 后端,未启用认证插件) |
| 漏洞类型 | 服务端请求伪造(SSRF) |
| CVSS | 9.3 · Critical |
| CVE | CVE-2026-64849 |
🔬 漏洞根因
MLflow 的 _validate_webhook_url() 仅验证初始 URL 的解析 IP 是否为公网地址,但验证后未将合法 IP 绑定到后续连接;webhook 投递时使用 requests 库默认行为跟随重定向,且重定向目标会重新进行 DNS 解析,未再次执行 SSRF 校验。攻击者只需提供一个通过校验的公网 HTTPS 端点,该端点返回 302 重定向至内网或云元数据地址,MLflow 即会跟随并获取响应。
🎯 攻击场景
1. 前提:目标 MLflow Tracking Server 版本低于 3.15.0,且以默认配置启动(未启用认证插件),Webhook API 匿名可访问。2. 攻击者在公网部署一个 HTTPS 服务,该服务返回 302 Location 指向 http://169.254.169.254/latest/meta-data/ 或 http://127.0.0.1:80/ 等内网地址。3. 攻击者调用 POST /api/2.0/mlflow/webhooks/{id}/test 接口,Webhook ID 可为任意已存在或新建的 webhook(若可创建),或直接利用默认存在的 webhook。4. MLflow 服务器收到请求后,_validate_webhook_url() 对攻击者提供的公网 URL 进行校验,DNS 解析为公网 IP,校验通过;随后投递请求时跟随 302 重定向,重新解析内网域名/地址,向目标发起请求。5. 接口将上游响应状态与响应体返回给攻击者,攻击者成功读取云元数据(如 AWS 临时凭证)或内网服务敏感信息。
💥 漏洞影响
未认证攻击者可读取云元数据服务(如 169.254.169.254)中的临时凭证、IAM 角色信息,或访问内网 HTTP 服务(如管理面板、内部 API),导致敏感信息泄露,进一步可导致云账号接管或内网横向渗透。默认 MLflow 服务器无认证,且该接口存在时风险极高。
🛡️ 修复建议
升级到 MLflow 3.15.0 或更高版本,官方修复了重定向跟随时的 IP 校验。临时缓解措施:1) 启用认证插件,限制 Webhook API 的访问;2) 在网络层用防火墙/安全组限制对 mlflow server 的访问,仅允许可信 IP;3) 禁用或删除 Webhook 测试接口(如通过反向代理屏蔽 /api/2.0/mlflow/webhooks/*/test);4) 出方向网络策略限制访问内网 IP 段和云元数据地址。
📎 参考链接
- https://nvd.nist.gov/vuln/detail/CVE-2026-64849
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-64849
- 原始来源(GitHub-Advisory)
🚨 威胁评估
| 📈 EPSS 利用概率 | 暂无数据 |
| 🚨 CISA KEV | 未被已知利用 |
| 🔧 公开 PoC | 暂无公开 PoC |
⚠️ 本文由漏洞情报系统自动生成,仅供安全研究与防御参考。生成时间: 2026-08-20 04:07 | 来源: GitHub-Advisory
🤖 常见问题解答(FAQ)
❓ 如何检测我的 MLflow 服务是否受此 SSRF 漏洞影响?
检查版本是否低于 3.15.0,并确认服务是否启用了默认认证。可向 /api/2.0/mlflow/webhooks/ 非存在 ID 发送 POST 测试,若返回未授权错误则已启用认证;若返回 404/400 则可能未受保护。
❓ 攻击者能否直接获取云服务器 IAM 角色凭证?
能。通过重定向到 169.254.169.254 的元数据 URL,测试接口会返回响应体,包括 AWS IMDSv1 的临时凭证。若使用 IMDSv2 需额外请求头,但仍可能被利用,取决于目标配置。
❓ 修复版本 3.15.0 具体修复了什么?
修复后在 webhook 投递时不再盲目跟随重定向,或对重定向目标重新执行 _validate_webhook_url() 检查,并禁止访问非公网 IP 段,从而阻断 SSRF 链。