CVE-2026-31965CVE-2026-31965是HTSlib库中的一个高危安全漏洞,CVSS评分8.2。HTSlib是一个用于读写生物信息学文件格式的C语言库。CRAM是一种高效的压缩格式,专门用于存储DNA序列比对数据。该漏洞存在于cram_decode_slice()函数中,在解析CRAM记录时,对reference id字段的验证时机不当,导致在验证前发生了两次越界内存读取。虽然该函数最终会报告错误,但由于在验证前就已发生越界访问,攻击者可能利用此漏洞泄漏内存中的敏感信息或导致目标程序崩溃。此漏洞无需认证即可利用,攻击复杂度低,对可用性影响较高。
漏洞根源在于HTSlib的cram_decode_slice()函数在处理CRAM格式文件时,对reference id字段的验证逻辑位置不当。具体来说,当函数读取CRAM记录时,过早地进行了数据处理操作,而reference id字段的合法性验证被延迟到处理之后执行。这导致在验证发生前,代码会尝试访问基于未验证reference id计算出的内存位置,产生两次越界读取(two out of bounds reads)。攻击者可以通过构造恶意CRAM文件,设置特定的reference id值,使程序在验证前访问非法内存地址。成功利用此漏洞可能实现:1)读取程序内存中的敏感数据(如密钥、凭证、其他内存数据);2)导致程序异常崩溃,形成拒绝服务条件。由于验证逻辑最终会捕获错误,实际利用难度较高,但仍存在信息泄漏风险。