CVE-2026-44302Snappier是一个基于C#语言的高性能Snappy压缩算法实现库。在1.3.1版本之前,该组件在处理特定格式的压缩数据时存在严重的安全缺陷。当Snappier.SnappyStream尝试解压一个经过精心构造的畸形帧格式Snappy流时,会触发逻辑错误进入无法捕获的无限循环。由于触发条件仅需极小的数据包(约15字节),攻击者极易利用此漏洞。该漏洞会导致应用程序线程挂起,进而造成拒绝服务,严重影响系统可用性。官方已在1.3.1版本中修复了此问题。
该漏洞的深层原因在于Snappier库对Snappy帧格式流的解析逻辑存在边界检查缺失。Snappy格式定义了严格的流标识和分块结构,但在旧版本实现中,解析器在遇到异常的字节序列或畸形的块头时,未能正确终止循环或抛出异常。具体而言,当解压器读取到特定的畸形数据时,内部的状态机可能无法推进,导致代码在特定的循环结构中无限执行。由于该死循环发生在核心解压逻辑中,且没有内置的迭代次数限制或超时保护机制,常规的异常捕获机制(如try-catch)无法捕获并处理此错误。攻击者只需向使用受影响版本Snappier的服务端发送恶意构造的压缩包,即可消耗服务器线程资源,导致服务无响应。