CVE-2026-37555libsndfile 1.2.2版本中的IMA ADPCM编解码器存在漏洞。由于在修复CVE-2022-33065时未完全覆盖所有代码路径,WAV代码路径中的整数乘法运算发生溢出。攻击者可通过精心构造的WAV文件头部触发该漏洞,导致帧计数错误,进而引发堆缓冲区溢出或拒绝服务。
该漏洞位于libsndfile库处理WAV文件格式的IMA ADPCM编解码器实现中。漏洞产生的根本原因是类型转换和运算顺序不当。在计算音频帧总数时,程序将两个32位整数(`samplesperblock`和`blocks`)直接相乘。这两个参数直接来源于用户提供的WAV文件头部,完全受攻击者控制。如果攻击者精心构造这两个数值使其乘积超过32位整数的最大值(2^31-1),乘法操作将发生整数溢出,产生一个错误的负数结果。随后,这个错误的结果被赋值给64位的`sf.frames`变量。由于内存分配往往依赖于这个错误的帧计数,程序会分配过小的缓冲区。当后续代码尝试向缓冲区写入实际的大数据时,就会发生堆缓冲区溢出,覆盖相邻内存区域,从而引发拒绝服务或潜在的任意代码执行风险。