CVE-2026-42216OpenEXR 是电影行业广泛使用的图像格式。在 3.0.0 至 3.4.10 版本中,IDManifest::init() 函数存在严重漏洞。该函数在处理前缀压缩字符串时,若前序字符串长度超过 255 字节,代码会尝试读取下一个字符串的前两字节作为长度前缀,但未进行边界检查。这导致越界读取,攻击者可利用特制 EXR 文件触发该漏洞,造成敏感信息泄露或应用程序崩溃。
该漏洞位于 OpenEXR 核心库的 IDManifest 模块中,具体涉及字符串解压缩逻辑。根据 EXR 规范,当清单中的字符串列表采用前缀压缩存储时,如果某个字符串长度超过 255 字节,其后的字符串长度将由 2 个字节表示。然而,在 IDManifest::init() 函数的实现中,当处理这种情况时,代码直接通过索引访问 `stringList[i][0]` 和 `stringList[i][1]` 以获取这两个长度字节,完全忽略了当前字符串对象是否包含足够的数据。如果攻击者精心构造一个 EXR 文件,使得在遇到长字符串后紧跟一个长度不足的空字符串或极短字符串,程序就会读取到已分配内存边界之外的地址。这种越界读取可能导致内存访问违例引发崩溃,造成拒绝服务。更为严重的是,攻击者可能利用此缺陷读取堆内存中的相邻数据,可能泄露敏感信息(如内存布局、指针等),为后续的攻击利用提供便利。