CVE-2026-31972CVE-2026-31972是SAMtools生物信息学工具中的一个高危安全漏洞。SAMtools是用于读取、操作和写入生物信息学文件格式的流行程序。漏洞位于mpileup命令中,该命令用于输出与已知参考序列比对的DNA序列。在正常情况下,mpileup按位置顺序输出数据,参考数据在打印后会被丢弃。然而,在特定条件下,参考数据可能被过早丢弃,导致程序尝试从已释放的内存地址读取数据。这种Use-After-Free条件可能使攻击者获取程序内部状态信息,造成敏感数据泄露。更严重的是,该漏洞还可能导致程序崩溃,从而引发拒绝服务攻击。由于CVSS评分高达9.8,且攻击复杂度低、无需认证和用户交互,该漏洞可被远程攻击者轻松利用,对使用SAMtools进行基因数据分析的研究机构和企业构成严重威胁。
SAMtools的mpileup功能在处理大规模基因组数据时,需要维护参考序列和比对序列的映射关系。漏洞产生的根本原因在于内存管理逻辑缺陷:当参考位置数据被处理并输出后,系统会立即释放相关内存以便重复利用。然而,由于输出顺序严格按照基因组位置排列,在某些特定的输入序列条件下(如特定位置的覆盖度、插入缺失模式),系统可能在数据仍被需要时过早触发释放操作。攻击者可构造特定的BAM/SAM文件输入,当mpileup命令处理这些文件时,会触发对已释放内存的访问尝试。这可能导致:1) 信息泄露:攻击者可能读取到堆内存中的残留数据,包括之前处理的基因序列片段或其他敏感信息;2) 程序崩溃:通过精心设计的输入触发内存访问违例,导致mpileup进程终止。该漏洞属于经典的Use-After-Free类内存破坏漏洞,与常见的C/C++程序内存管理错误有相似的利用特征。