OpenImageIO TGA 解码器漏洞 CVE-2026-43996 导致 OOB 读取
CVE-2026-43996(CVSS 5.5)在 OpenImageIO TGA 解码器中使用无符号 32 位包装绕过边界检查,从而实现越界读取。影响 3.0.18.0 和 3.1.13.0 之前的版本。

Indicators of Compromise (2)
| Type ↑ | Value | Description | Conf | |
|---|---|---|---|---|
| IP | 3.0.18.0 | Extracted from source material | high | |
| IP | 3.1.13.0 | Extracted from source material | high |
执行摘要
OpenImageIO 的 TGA 图像解码器中存在一个边界检查绕过漏洞,跟踪编号为 CVE-2026-43996,允许攻击者通过制作恶意 TGA 文件触发越界(OOB)读取。这个被评为 CVSS 5.5(中等严重性)的漏洞源于 TGAInput::decode_pixel 函数中的无符号 32 位整数环绕。受影响的 OpenImageIO 版本为 3.0.18.0 和 3.1.13.0 之前。根据 GitHub 安全通告(GHSA-mq8j-73c4-cr55),项目维护者于 2026 年 5 月 12 日发布了补丁。依赖于 OpenImageIO 进行图像处理流程的视觉效果(VFX)、动画和媒体制作组织应优先更新到修补版本。
技术分析
OpenImageIO 是一个广泛使用的开源库,用于读取、写入和操作与 VFX 和动画流程相关的各种格式的图像文件,包括 TGA(Truevision Targa)。漏洞存在于 TGAInput::decode_pixel 方法中,该方法处理 TGA 图像的调色板索引像素解码。
根据 Academy Software Foundation 发布的通告,边界检查使用无符号 32 位算术计算 k + palbytespp。当攻击者将调色板索引 k 设置为 0xFFFFFFFC(接近无符号 32 位整数最大值的值)并将调色板字节每像素(palbytespp)设置为 4 时,加法环绕到 0。结果 0 随后与 palette_alloc_size 进行比较 —— 如果分配的调色板大小大于 0,则检查通过,代码继续在超出分配缓冲区的偏移量处从调色板内存读取。这种 OOB 读取可能会泄露敏感内存内容或导致崩溃。
通告指出,该漏洞是由 OpenImageIO 开发团队在代码审查中内部发现的,而不是通过外部漏洞报告。截至通告发布日期,尚未确认任何公开的概念验证或活跃利用。然而,该漏洞可以通过制作的 TGA 文件轻易利用,使其成为任何通过受影响版本处理不受信任 TGA 图像的系统的可信风险。
修补版本 3.0.18.0 和 3.1.13.0 通过将算术更改为使用 64 位无符号整数进行边界检查,消除了环绕条件,从而修复了这个问题。该修复于 2026 年 4 月 30 日合并到主分支,并作为 5 月 12 日补丁周期的一部分发布。
缓解措施与建议
防御者应在处理 TGA 文件的所有系统上更新 OpenImageIO 至版本 3.0.18.0 或 3.1.13.0(或更高版本),特别是在渲染农场、资产管理服务器和媒体制作环境中的工作站部署。对于无法立即修补的系统,管理员可以通过限制 TGA 文件仅从受信任的来源摄取,并使用可以检测畸形调色板数据的图像验证工具扫描传入文件来降低风险。鉴于 CVSS 5.5 的评级以及缺乏已知的野外利用,这个漏洞不太可能成为大多数组织(VFX 和动画行业除外)的优先事项,但在多租户渲染流程中潜在的内存泄露值得关注。
订阅更新
将最新的网络安全资讯直接发送到您的邮箱。

