CVE-2026-31963CVE-2026-31963是HTSlib库中的一个高危安全漏洞,CVSS评分达到8.1分。HTSlib是一个用于读取和写入生物信息学文件格式的C语言库,而CRAM是一种压缩格式,用于存储DNA序列比对数据。该漏洞源于CRAM文件解码过程中对特征解析的off-by-one错误。具体而言,在处理超出CRAM记录序列范围的CRAM特征时,边界检查存在缺陷,导致可以向堆缓冲区末尾写入一个攻击者可控的字节,从而引发堆缓冲区溢出。攻击者可以通过构造恶意的CRAM文件触发此漏洞,用户一旦打开该文件,可能导致程序崩溃、堆内存数据被覆盖,甚至可能被利用来执行任意代码。此漏洞影响严重,官方已在版本1.23.1、1.22.2和1.21.1中修复,但目前没有已知的临时缓解措施。
HTSlib库在处理CRAM格式文件时使用基于参考序列的压缩方法来移除冗余数据。CRAM格式存储的是参考序列中的位置以及与该位置参考序列的差异列表(称为特征序列)。漏洞发生在解码这些特征时,代码中存在一个off-by-one错误,导致对CRAM特征边界检查不当。当特征出现在CRAM记录序列范围之外时,程序仍会尝试处理并写入数据,最终造成向堆缓冲区边界外写入一个攻击者控制的字节。这种越界写入可以破坏堆内存结构,引发程序崩溃或可能被攻击者利用来控制程序执行流程。由于CRAM文件通常由生物信息学研究人员使用,攻击者可能通过分发恶意CRAM文件或诱骗用户打开特制文件来实施攻击。漏洞利用需要用户交互打开恶意文件,这降低了攻击的自动化程度,但仍然构成严重威胁。