CVE-2026-31967HTSlib是一个用于读写生物信息学文件格式的C语言库。CRAM是一种压缩格式,用于存储DNA序列比对数据。该漏洞存在于HTSlib处理CRAM文件时的`cram_decode_slice()`函数中。在读取CRAM记录时,该函数未对mate reference ID字段的值进行验证。当后续将数据转换为SAM格式时,未验证的值会导致数组越界读取,用于查找相应参考序列名称。如果获取的数组值恰好是有效指针,则会被解释为字符串,并尝试将数据作为SAM记录的一部分写入。这可能导致程序状态信息泄露,或因尝试访问无效内存而导致程序崩溃。攻击者可通过诱骗目标用户打开特制的CRAM文件来触发此漏洞,造成内存信息泄露或拒绝服务。
漏洞根源在于`cram_decode_slice()`函数中mate reference ID字段缺少边界检查。具体来说:1) 函数读取CRAM记录时直接使用未经验证的mate_ref_id值;2) 在SAM格式转换阶段,该值被用作数组索引查询参考序列名称;3) 当mate_ref_id超出有效范围时,产生越界内存读取;4) 若越界读取的值被误解释为有效指针,可导致任意内存写入。攻击者构造包含异常mate_ref_id值的CRAM文件即可触发漏洞。成功利用可导致:敏感内存数据通过SAM输出泄露,或程序因SIGSEGV信号崩溃。CVSS 9.1评分表明该漏洞可网络利用、无需认证且对机密性和可用性影响严重。