TARmageddon:Async-Tar Rust库漏洞可实现远程代码执行
网络安全研究人员披露了一个影响流行的async-tar Rust库及其分支(包括tokio-tar)的高危漏洞细节,该漏洞在特定条件下可能导致远程代码执行。
这个被追踪为CVE-2025-62518(CVSS评分:8.1)的漏洞被发现该问题的Edera命名为TARmageddon。它影响了多个广泛使用的项目,如testcontainers和wasmCloud。
总部位于西雅图的安全公司表示:“在最坏情况下,此漏洞的严重性为8.1(高危),可通过文件覆盖攻击(如替换配置文件或劫持构建后端)导致远程代码执行(RCE)。”
问题的复杂性在于,尽管tokio-tar通过crates.io获得了数千次下载,但它基本上已被弃用。Tokio-tar是一个用于在Tokio运行时上异步读写TAR存档的Rust库。该Rust crate最后更新于2023年7月15日。
在tokio-tar没有补丁的情况下,建议依赖该库的用户迁移到astral-tokio-tar,该库已发布0.5.6版本来修复此漏洞。
Astral开发人员William Woodruff在警报中表示:“astral-tokio-tar 0.5.6之前的版本存在边界解析漏洞,允许攻击者通过利用不一致的PAX/ustar头处理来走私额外的存档条目。”
“当处理包含大小覆盖的PAX扩展头时,解析器基于ustar头大小(通常为零)而不是PAX指定的大小错误地推进流位置,导致其将文件内容解释为合法的TAR头。”
简而言之,该问题是在确定文件数据边界时处理PAX扩展头和ustar头不一致的结果。PAX(便携式存档交换的缩写)是USTAR格式的扩展版本,用于存储TAR存档中成员文件的属性。
PAX扩展头和ustar头之间的不匹配——PAX头正确指定文件大小,而ustar头错误地将文件大小指定为零(而不是PAX大小)——导致了解析不一致,使库将内部内容解释为额外的外部存档条目。
Edera解释说:“通过推进0字节,解析器未能跳过实际文件数据(这是一个嵌套的TAR存档),并立即遇到位于嵌套存档开头的下一个有效TAR头。然后它错误地将内部存档的头解释为属于外部存档的合法条目。”
因此,攻击者可以利用此行为在库处理嵌套TAR文件时"走私"额外存档,从而可能覆盖提取目录中的文件,最终为任意代码执行铺平道路。
在一个假设的攻击场景中,攻击者可以将特制的包上传到PyPI,使得外部TAR包含合法的pyproject.toml,而隐藏的内部TAR包含恶意的pyproject.toml,在安装期间劫持构建后端并覆盖实际文件。
“虽然Rust的保证使得引入内存安全错误(如缓冲区溢出或释放后使用)变得更加困难,但它并不能消除逻辑错误——而这种解析不一致从根本上说是一个逻辑缺陷,“Edera说。“开发人员必须对所有类别的漏洞保持警惕,无论使用何种编程语言。”