CVE-2026-9538Archive::Tar Perl模块在3.10版本之前存在严重的安全漏洞。由于在处理tar文件头时,未对入口大小字段进行有效的上限校验,攻击者可以通过构造特制的文件头声明一个极大的文件大小。当解析此类文件时,Perl会根据该大小尝试分配标量变量,导致系统内存被迅速耗尽。这种内存耗尽攻击无需用户交互且不需要认证,远程攻击者即可利用此漏洞造成拒绝服务,严重影响系统的可用性。
该漏洞的核心问题在于Archive::Tar模块的_read_tar()函数。在解析tar包时,该函数直接读取tar头中的12字节大小字段,并将其用于确定需要读取的数据块大小。代码中缺乏对该数值的上限检查,直接将其传递给Perl的内存分配操作或读取操作。
攻击者可以构造一个恶意的tar文件,将其头部的size字段设置为一个极大的数值(例如超过系统物理内存大小的数值)。当易受攻击的Archive::Tar版本尝试读取并解析这个文件时,它会尝试分配一个与该声明大小相匹配的Perl标量。这会导致系统资源被瞬间耗尽,触发操作系统的OOM Killer机制,强制终止相关进程,从而实现拒绝服务攻击。由于CVSS向量为AV:N/AC:L/PR:N/UI:N,该漏洞易于通过网络远程利用。