CVE-2026-33056tar-rs是Rust语言的tar归档处理库。在0.4.44及以下版本中,其`unpack_dir`函数存在安全缺陷。由于使用`fs::metadata()`进行路径检查,该函数会自动跟随符号链接。攻击者可构造包含恶意符号链接和目录条目的特制tarball,诱使程序在解压时跟随链接并修改解压根目录外任意目录的权限,从而破坏系统完整性,造成严重安全隐患。
该漏洞的核心在于`unpack_dir`函数在处理解压逻辑时的校验机制不当。当程序需要确认路径是否为目录时,使用了`fs::metadata()`。与`fs::symlink_metadata()`不同,`fs::metadata()`会自动解析符号链接并返回目标文件的元数据。攻击者利用这一特性,构造一个包含两个同名条目的tarball:第一个是指向系统敏感目录(如/etc)的符号链接,第二个是目录类型的条目。在解压过程中,程序先创建符号链接。当处理后续的同名目录条目时,`fs::metadata()`跟随符号链接指向了实际系统目录。程序误判目标已存在且为目录,随即执行chmod操作修改权限。这允许攻击者在无需认证的情况下,仅通过诱导用户解压文件,即可改变系统关键目录的访问权限,造成严重的安全风险。