CVE-2025-8917CVE-2025-8917 是 allegroai/clearml v2.0.1 版本中存在的一个路径遍历漏洞。该漏洞源于项目中的 `safe_extract` 函数对符号链接(symbolic links)和硬链接(hard links)的处理不当。ClearML 是一个开源的机器学习平台,广泛用于实验管理、模型管理和工作流编排。当用户通过 `safe_extract` 函数解压归档文件(如 tar、zip 等)时,由于未能正确验证归档中包含的链接目标,攻击者可以构造恶意的归档文件,其中包含指向归档目录之外路径的符号链接或硬链接。当受害者解压此类恶意归档时,文件将被写入到预期目录之外的位置,从而实现任意文件写入。
该漏洞的 CVSS 评分为 5.8,属于中危级别。虽然攻击向量为本地(AV:L),需要高权限(PR:H)和用户交互(UI:R),但其完整性和机密性影响均为高(C:H/I:H),可用性影响为无(A:N)。如果攻击者能够利用此漏洞覆盖关键系统文件或应用配置文件,可能进一步导致远程代码执行(RCE)。该漏洞由 [email protected] 发现并报告,披露日期为 2025 年 10 月 5 日。
该漏洞的核心问题在于 `safe_extract` 函数在解压归档文件时未能充分验证归档条目中的符号链接和硬链接。具体技术原理如下:
1. **符号链接遍历**:当 tar/zip 归档中包含符号链接条目时,`safe_extract` 函数未检查链接目标是否指向归档解压目录之外。攻击者可以创建一个符号链接,指向如 `/etc/cron.d/`、`/root/.ssh/authorized_keys` 或应用程序配置目录等敏感位置。随后,归档中的常规文件可以通过该符号链接写入到目标位置。
2. **硬链接遍历**:类似地,硬链接(hard links)允许引用同一文件系统上的其他 inode。如果 `safe_extract` 允许创建硬链接指向归档目录之外的文件,攻击者可以覆盖任意文件的内容。
3. **利用方式**:攻击者首先构造一个恶意的 tar 归档,其中包含一个指向目标路径的符号链接(如指向 `/tmp/target`),然后包含一个通过该符号链接路径写入内容的常规文件。当受害者在 ClearML 环境中解压该归档时,文件将被写入到预期目录之外的位置。
4. **升级到 RCE**:如果攻击者覆盖了 Python 包的 `__init__.py` 文件、shell 配置文件(如 `.bashrc`、`.zshrc`),或计划任务文件,就可以在用户下次登录或系统执行计划任务时实现远程代码执行。
修复提交为 https://github.com/allegroai/clearml/commit/64fb2bcbdbb87a74af90dd723d5ef4a99fceeb73,修复方案是在解压前检查链接目标是否在允许的目录范围内。