CVE-2026-43903OpenImageIO在3.0.18.0和3.1.13.0之前的版本中存在安全漏洞。在sgiinput.cpp文件的RLE解码循环中,代码使用OIIO_DASSERT宏进行边界检查。然而在Release构建模式下,该宏被编译为空操作,导致所有边界检查失效。攻击者可诱导用户打开特制的.sgi文件,利用RLE计数超过扫描线宽度的缺陷触发堆缓冲区溢出,从而导致应用程序崩溃或潜在的代码执行。
该漏洞位于OpenImageIO处理SGI图像格式的RLE解压缩逻辑中。具体问题出现在sgiinput.cpp的第265和274行。开发者使用了OIIO_DASSERT宏来验证RLE解码过程中的数组边界。在Debug模式下,这会触发断言,但在Release模式下,dassert.h:210将其定义为((void)sizeof(x)),这使得边界检查代码被编译器优化掉。当处理恶意构造的.sgi文件时,如果文件中的RLE计数值大于图像的扫描线宽度,由于缺乏有效的运行时检查,程序会继续向堆缓冲区写入超出预定大小的数据,导致堆缓冲区溢出。