CVE-2025-8406CVE-2025-8406是ZenML机器学习平台0.83.1版本中存在的一个高危路径遍历漏洞。该漏洞位于ZenML的`PathMaterializer`类中的`load`函数中。当ZenML从`data.tar.gz`归档文件中加载数据时,系统使用`is_path_within_directory`函数来验证文件路径是否在预期的目录范围内。然而,该验证函数无法有效检测归档文件中的符号链接(symbolic link)和硬链接(hard link),攻击者可以构造恶意的tar归档文件,利用符号链接绕过路径检查,从而实现任意文件的写入操作。如果被写入的是关键系统文件或配置文件,攻击者可以进一步实现任意命令执行,对系统安全造成严重威胁。该漏洞的CVSS评分为7.8,属于高危级别,需要本地访问权限但无需认证,且需要用户交互(如加载恶意归档文件)。此漏洞由[email protected]发现并报告,披露日期为2025年10月5日。ZenML作为一款流行的开源MLOps平台,广泛应用于机器学习工作流管理和模型部署,因此该漏洞可能影响大量使用ZenML的企业和开发者。
该漏洞的核心问题在于ZenML的`PathMaterializer.load()`方法在解压`data.tar.gz`归档时使用了不充分的路径验证机制。具体技术细节如下:
1. **验证机制缺陷**:`is_path_within_directory`函数仅检查解压后的文件路径是否在目标目录范围内,但对于tar归档中的符号链接和硬链接,该函数无法正确识别其真实指向路径。
2. **符号链接绕过**:攻击者可以创建一个包含符号链接的恶意tar归档文件。符号链接指向目标目录之外的位置(如`/etc/cron.d/`或`/root/.ssh/authorized_keys`),当`tar.extract()`解压时,符号链接会被创建,然后通过符号链接写入的文件将绕过`is_path_within_directory`的检查。
3. **硬链接攻击**:类似地,硬链接也可以指向目标目录之外的文件路径,利用硬链接的特性绕过路径检查。
4. **攻击流程**:
- 构造包含恶意符号链接/硬链接的`data.tar.gz`归档
- 通过ZenML的artifact加载机制触发`PathMaterializer.load()`
- 解压时符号链接被创建,随后文件被写入到符号链接指向的位置
- 实现任意文件写入,可能覆盖关键配置文件或脚本
5. **影响升级**:如果被覆盖的是计划任务文件、SSH密钥文件或Python脚本等,攻击者可进一步实现远程命令执行,完全控制目标系统。