CVE-2026-24686go-tuf是Go语言实现的The Update Framework (TUF)客户端库,主要用于软件更新系统的安全实现。CVE-2026-24686漏洞源于go-tuf的TAP 4 Multirepo Client功能存在路径遍历问题。漏洞出现在处理map文件时,程序直接使用用户可控的repository名称(repoName)作为本地元数据缓存目录的路径组件,而未对repoName进行安全校验。当应用程序接受来自不可信源的map文件时,攻击者可以通过构造包含路径遍历序列(如"../")的repoName,使go-tuf在预期缓存目录之外创建目录结构并写入根元数据文件。此漏洞可能导致敏感文件被覆写或在系统任意位置创建文件,取决于运行进程的文件系统权限。攻击复杂度较低,但需要应用程序主动解析不可信的map文件。
go-tuf在版本2.0.0引入了TAP 4 Multirepo支持,该功能允许客户端从多个仓库获取元数据。在Multirepo Client实现中,当应用程序加载map文件并解析repoName后,程序使用repoName字符串直接拼接本地元数据缓存目录路径。关键问题在于:1) repoName未经过路径规范化处理,允许包含"../"等目录遍历序列;2) 路径拼接时未验证最终路径是否在预设的LocalMetadataDir基础目录范围内;3) 程序会以运行进程的用户权限在目标位置创建目录并写入root.json等元数据文件。攻击者利用此漏洞可实现任意目录创建和文件写入,潜在影响包括:覆写系统关键配置文件、在SSH authorized_keys中写入公钥、修改crontab实现持久化等。攻击成功的前提是目标应用程序使用go-tuf处理来自外部输入的map文件配置。