CVE-2026-108106 snappy-java 无界内存分配拒绝服务漏洞
影响攻击者可用少量构造数据耗尽 JVM 内存,导致拒绝服务
Xerial snappy-java 1.1.10.9 之前版本存在无界内存分配漏洞。攻击者在压缩数据中声明极大的未压缩长度,即可诱使库分配最多约 2 GB 内存。该问题可被少量精心构造的字节触发,最终导致 OutOfMemoryError 与服务不可用。
影响范围
Xerial snappy-java 1.1.10.9 之前的版本。具体受影响版本区间暂无更细的公开信息。
漏洞详情
漏洞类型为无界内存分配(不受控资源消耗)导致的拒绝服务。成因是解压时未对压缩头中声明的未压缩长度做上限校验,直接按该值分配缓冲区。攻击者只需向 Snappy.uncompress、uncompressString、SnappyInputStream 或 SnappyFramedInputStream 传入少量构造字节,即可强制触发大额内存分配。
利用条件与风险
利用前提是目标应用使用受影响版本处理来自不可信来源的 Snappy 压缩数据,无需认证即可远程触发。实战中可造成 JVM 内存耗尽、服务崩溃或不可用,风险较高。
修复建议
建议升级到 snappy-java 1.1.10.9 或更高版本。临时缓解措施包括:限制单次解压输入大小、对解压后长度设置上限,并在处理不可信数据时隔离或限制进程内存。具体修复细节以官方公告为准。
Xerial snappy-java before 1.1.10.9 contains an unbounded memory allocation vulnerability that allows attackers to exhaust JVM memory by declaring a large uncompressed length in compressed input. Attackers can supply a few crafted bytes to Snappy.uncompress, uncompressString, SnappyInputStream or SnappyFramedInputStream to force allocations up to 2 GB, causing OutOfMemoryError and denial of service.