IPBUF安全漏洞报告
English
CVE-2025-15036 CVSS 10.0 严重

CVE-2025-15036: MLflow路径遍历漏洞

披露日期: 2026-03-30

漏洞信息

漏洞编号
CVE-2025-15036
漏洞类型
路径遍历
CVSS评分
10.0 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
MLflow

相关标签

路径遍历MLflowCVE-2025-15036沙箱逃逸任意文件写入

漏洞概述

MLflow在v3.7.0之前的版本中存在路径遍历漏洞。该漏洞源于`extract_archive_to_dir`函数在解压tar.gz文件时,未对归档成员路径进行充分验证。攻击者可通过控制恶意tar.gz文件,利用此漏洞覆盖系统中的任意文件。在多租户或共享集群环境中,这可能导致沙箱逃逸或权限提升,严重影响系统机密性、完整性和可用性。

技术细节

该漏洞位于MLflow的`mlflow/pyfunc/dbconnect_artifact_cache.py`文件中的`extract_archive_to_dir`函数。其根本原因是在处理上传的tar.gz归档文件时,代码直接解压文件而未检查文件名中是否包含路径遍历序列(如`../`)。当受害者解压攻击者精心构造的恶意压缩包时,由于缺乏路径清理,解压过程会将文件写入预期目录之外的位置。攻击者可利用这一点覆盖关键配置文件、写入Webshell或替换可执行文件,从而在无需认证的情况下实现远程代码执行或提升权限。由于MLflow常用于机器学习模型的部署与共享,此漏洞极易在多租户环境中被利用,攻击者可借此绕过沙箱限制,获取宿主机的高权限访问。CVSS向量显示该漏洞无需用户交互且影响范围可扩展至组件间(S:C),属于极高危利用场景。

攻击链分析

STEP 1
1. 构造恶意文件
攻击者创建一个tar.gz文件,其中包含带有路径遍历序列(如../)的文件名,旨在将文件写入目标目录之外。
STEP 2
2. 上传或诱导
攻击者将恶意文件上传至MLflow服务器,或诱导受害者处理该文件。
STEP 3
3. 触发解压
MLflow的`extract_archive_to_dir`函数处理该文件,开始解压操作。
STEP 4
4. 路径穿越写入
由于缺乏校验,恶意文件被写入系统任意位置(如覆盖配置文件或写入可执行文件)。
STEP 5
5. 权限提升/沙箱逃逸
攻击者利用写入的文件获得系统控制权或逃逸出MLflow的沙箱环境。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import tarfile import io # Create a malicious tar.gz demonstrating the path traversal # This script creates a file named "../../tmp/pwned.txt" inside the archive. malicious_content = b"This file was written outside the intended directory via CVE-2025-15036." with tarfile.open("exploit.tar.gz", "w:gz") as tar: # TarInfo object representing the file info = tarfile.TarInfo(name="../../tmp/pwned.txt") info.size = len(malicious_content) # Add the file to the archive tar.addfile(info, io.BytesIO(malicious_content)) print("Malicious archive 'exploit.tar.gz' created successfully.") print("If extracted by a vulnerable MLflow version, it will write to /tmp/pwned.txt")

影响范围

MLflow < v3.7.0

防御指南

临时缓解措施
建议立即升级至MLflow v3.7.0或更高版本以修复此漏洞。如果暂时无法升级,应实施严格的网络访问控制,限制对MLflow artifact上传接口的访问权限,并监控系统目录中是否有异常的文件写入行为。

参考链接

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