CVE-2026-33666Zserio是一个用于序列化结构化数据的紧凑高效框架。在2.18.1版本之前,BitStreamReader.h文件中的readBytes()和readString()函数存在严重安全漏洞。由于setBitPosition()的边界检查接收到一个溢出值,导致检查机制被完全绕过。攻击者可利用此漏洞,诱导程序从一个仅包含少量字节的缓冲区中读取高达512 MB的数据,从而触发段错误导致程序崩溃。该漏洞无需用户交互即可通过网络触发,造成拒绝服务。官方已在2.18.1版本中修复此问题。
该漏洞的核心原理在于整数溢出导致边界检查失效。在Zserio的BitStreamReader组件中,readBytes()或readString()函数在处理数据时,会调用setBitPosition()来验证读取操作是否越界。由于代码未对计算出的位位置进行整数溢出校验,攻击者可构造特制的恶意数据,使得传递给setBitPosition()的值发生溢出。溢出后的值在数值上可能满足边界条件(例如看起来很小或合法),从而绕过安全检查。一旦检查被绕过,程序将执行后续的内存读取指令,试图从极小的缓冲区中分配或读取大量内存(512MB)。这种严重的越界读取操作会立即触发操作系统的内存保护机制,导致段错误(Segmentation Fault),进而使服务进程意外终止。