CVE-2026-34378OpenEXR在3.4.0至3.4.9之前的版本中存在一个安全漏洞。该漏洞源于EXR文件头中的dataWindow属性缺少边界检查。攻击者可以通过构造特制的EXR文件,将dataWindow.min.x设置为一个大的负值,从而触发OpenEXRCore中的generic_unpack()函数发生有符号整数溢出。这种溢出会导致计算出的图像宽度异常巨大,并在后续的有符号整数乘法中引发溢出,最终导致程序通过UBSan触发SIGILL信号而终止。该漏洞的CVSS评分为6.5,属于中危级别,主要影响系统的可用性。
该漏洞的核心机制在于OpenEXRCore解析EXR文件头时的逻辑缺陷。具体来说,当解析组件处理dataWindow属性时,未对输入的坐标值进行充分的边界验证。攻击者利用这一点,将dataWindow.min.x设置为极端的负值。由于OpenEXRCore在计算图像宽度时使用了max - min的减法逻辑,极小的min值会导致计算结果溢出,变成一个非常大的数值。随后,该数值被用于内存分配或大小的计算,特别是在有符号整数乘法操作中。当溢出发生时,如果编译时启用了UBSan(未定义行为检测器),程序会捕获到该非法操作并抛出SIGILL信号(非法指令),导致进程崩溃。这实际上构成了一个拒绝服务攻击,攻击者只需诱导受害者打开恶意文件即可破坏应用程序的运行。