IMG_20241110_221524_529.jpg

WebP 0day——技术分析
通过将 Chrome 安全公告中的错误 ID 与最近对 libwebp 库代码的开源提交进行交叉引用,可以找到以下补丁:

修复 BuildHuffmanTable 中的 OOB 写入问题

该补丁于 9 月 7 日(Apple 报告发布后一天)创建,对应 CVE-2023-4863。根据对补丁的初步审查,我们了解到以下内容:

该漏洞存在于 WebP 的“无损压缩”支持中,有时也称为 VP8L。无损图像格式可以 100% 准确地存储和恢复像素,这意味着图像将以完美的精度显示。为了实现这一点,WebP 使用了一种称为霍夫曼编码的算法。
尽管霍夫曼编码在概念上基于树形数据结构,但现代实现已优化为使用表格。该补丁表明,在解码不受信任的图像时可能会溢出霍夫曼表。
具体来说,存在漏洞的版本使用基于固定表中预先计算的缓冲区大小的内存分配,然后将 Huffman 表直接构建到该分配中。新版本会进行“第一遍”构建,计算输出表所需的总大小,但实际上不会将表写入缓冲区。如果总大小大于预先计算的缓冲区大小,则进行更大的分配。