LibRaw 0.22.1 漏洞修复总结 漏洞概述 LibRaw 0.22.1 版本是一个主要包含安全修复和Bug修复的发布版本。该版本修复了多个与图像解码器相关的安全漏洞,主要涉及以下类型: 整数溢出 (Integer Overflow):在数据大小计算、分配大小计算中发现了整数溢出问题(涉及TALOS-2026-2364, TALOS-2026-2363, TALOS-2026-2359等编号)。 缓冲区溢出与内存安全 (Buffer Overflow & Memory Safety):包括限制 空间、在读取前清零缓冲区、检查Tile大小、向输入缓冲区添加额外字节以避免Huffman解码器溢出、初始化分配的缓冲区等。 输入验证与逻辑错误 (Input Validation & Logic Errors):包括检查文件偏移量是否超过文件大小、在读取循环中检查EOF(End Of File)、检查Bayer模式是否正确、检查实际颜色计数与滤镜是否匹配等。 影响范围 所有使用旧版本LibRaw库的应用程序,特别是涉及处理以下相机格式或解码器的场景: CR3 (Canon) DNG (Nikon, FP DNG) Nikon (Padded/12bit, Coolscan) Sony (YCC decoder) Panasonic (enc8 tile) Fuji Olympus Pentax Canon EOS Kiss M2 修复方案 升级至 LibRaw 0.22.1 版本。 该版本通过以下具体措施修复了上述漏洞: 1. 内存分配限制:实现了硬单分配限制 ( ),并将分配大小计算转换为64位算术。 2. 输入清理:在 或解析前清零输入字符串,避免比较随机堆栈垃圾。 3. 边界检查:在解码器(如Sony YCC, CR3 parser)中增加了对Tile大小、文件偏移量、EOF的严格检查。 4. 特定格式修复:针对Nikon, Panasonic, Fuji, Olympus, Pentax, Canon等特定厂商的RAW格式解析逻辑进行了修正。