CVE-2025-67721Aircompressor是一个Java压缩库,提供了Snappy、LZO、LZ4和Zstandard压缩算法的Java实现。该库在3.3及以下版本中存在缓冲区过度读取(Buffer Over-read)漏洞,源于Java实现的Snappy和LZ4解压器对畸形数据的处理不当。攻击者可以通过构造恶意的压缩输入,使解压缩后的输出包含之前缓冲区中残留的数据。在应用程序重用同一输出缓冲区进行多次解压缩操作的场景下(如Web服务器为提升性能而使用固定大小缓冲区),这可能导致敏感信息泄露。该漏洞的CVSS评分为7.5,属于高危漏洞,对机密性影响较高,但对完整性和可用性无影响。漏洞已于3.4版本中修复。
该漏洞根本原因在于Aircompressor库中Snappy和LZ4解压缩实现对输入数据边界检查不完善。当解压器处理畸形或恶意构造的压缩数据时,由于缺少正确的边界验证,可能导致读取超出预期数据范围的内存内容。在解压缩过程中,如果输出缓冲区之前被用于处理其他数据,其中残留的敏感信息(如认证令牌、用户数据、密钥等)可能被包含在后续的解压缩输出中。攻击者需要构造特定的压缩数据流,触发解压器将相邻内存区域的数据复制到输出缓冲区。漏洞的利用前提是目标应用程序使用固定大小的输出缓冲区并重复使用进行多次解压缩操作,这在高性能Web服务中较为常见。攻击者可通过截获或诱导目标处理恶意压缩数据来实现信息泄露,无需认证或用户交互即可远程利用。