CVE-2026-43904OpenImageIO 在 3.0.18.0 和 3.1.13.0 之前的版本中存在堆缓冲区溢出漏洞。该漏洞源于处理 Softimage .pic 文件时,RLE(行程长度编码)解码路径未能正确验证运行长度。攻击者可通过诱导用户打开特制的 .pic 文件,触发堆溢出,可能导致敏感信息泄露、数据篡改或服务拒绝。
该漏洞位于 OpenImageIO 的 `softimageinput.cpp` 文件中,具体影响 Softimage .pic 图像文件的解析过程。在处理混合 RLE(行程长度编码,代码第 469 行)和纯 RLE(代码第 345 行)数据包时,程序未将运行长度限制在剩余扫描线宽度内。尽管原始数据包路径(第 403 行)正确使用了 `std::min` 函数进行边界检查,但 RLE 解码路径遗漏了这一关键的安全验证。当攻击者诱导受害者打开特制的 .pic 文件时,文件中包含的恶意 RLE 数据包会指定一个异常大的运行长度。由于缺乏校验,程序会盲目地向堆缓冲区写入数据,导致多达 65535 字节的堆溢出。这种内存破坏行为可能覆盖堆管理结构或相邻的关键数据,进而导致拒绝服务、信息泄露,甚至在特定条件下实现任意代码执行。该漏洞在版本 3.0.18.0 和 3.1.13.0 中得到修复。