CVE-2025-62518CVE-2025-62518是astral-tokio-tar库中存在的一个高危安全漏洞(CVSS 8.1),该库是用于异步Rust应用程序的tar归档文件读取和写入库。该漏洞被命名为"Tarmageddon",涉及PAX扩展头与ustar头处理之间的不一致性,允许攻击者通过构造特殊的tar归档文件来走私(smuggle)额外的归档条目。
具体而言,当处理包含PAX扩展头的归档文件时,解析器错误地根据ustar头中声明的尺寸(通常为零)来推进流位置,而非PAX头中指定的实际尺寸。这导致解析器将文件内容误认为合法的tar头信息,从而绕过安全检查。攻击者可以利用此漏洞在受害系统中解压出未经授权的文件,或者覆盖关键系统文件,实现权限提升或远程代码执行。
该漏洞的CVSS评分为8.1,属于高危级别。攻击向量为网络(AV:N),无需认证(PR:N),但需要用户交互(UI:R),例如用户下载并解压恶意构造的tar文件。成功利用后,机密性影响为高(C:H),完整性影响为高(I:H),可用性影响为无(A:N)。
此漏洞已在astral-tokio-tar 0.5.6版本中修复。由于没有可用的临时缓解措施,强烈建议所有用户立即升级到修复版本。受影响的衍生产品包括使用tokio-tar的uv(Python包管理器)等下游项目,这些项目也发布了相应的安全公告。
该漏洞的核心在于astral-tokio-tar库对tar归档文件中PAX扩展头和ustar头之间尺寸字段的不一致处理。
**技术原理:**
1. tar归档文件格式支持两种头部格式:传统的ustar格式和POSIX.1-2001定义的PAX扩展格式。当归档条目使用PAX格式时,实际的文件大小等元数据存储在PAX扩展头中,而ustar头中的size字段通常被设置为0。
2. 正常解析流程应当:先读取PAX扩展头获取真实的文件大小,然后按照该大小跳过文件内容,再继续解析下一个条目。
3. 漏洞版本中的解析器存在逻辑缺陷:它错误地使用ustar头中的size字段(0)来推进流位置,而非PAX头中指定的实际大小。这导致解析器在跳过文件内容时偏移量不足,从而将文件内容的前512字节误解析为下一个tar条目头。
**利用方式:**
攻击者可以构造一个包含PAX扩展头的恶意tar归档,其中:
- 第一个条目使用PAX扩展头声明一个较大的文件大小
- ustar头中的size字段为0
- 实际文件内容中嵌入精心构造的伪造tar头,指向攻击者想要写入的敏感文件路径(如/etc/cron.d/malicious)
当受害者解压该归档时,解析器会跳过错误的偏移量,将嵌入的伪造头解析为合法条目,从而将攻击者控制的文件内容写入任意路径。这可以用于覆盖关键配置文件、植入后门或执行任意代码。