漏洞概述 漏洞名称: pcftread: validate bitmap sizes and offsets against per-glyph metrics 漏洞描述: 函数使用 直接从 PCF 文件中读取数据来分配重绘的位图缓冲区。然而,每个字形的指标(也来自文件)控制 写入多少数据。恶意的 PCF 字体可以声明一个小的 值,而实际使用更大的每字形指标,导致堆缓冲区溢出。 类似的问题也出现在编码偏移量上: 从 PCF 文件中读取编码偏移量,并使用它们来索引编码表数组,而没有进行边界检查。恶意的字体可以设置大于指标的编码偏移量,导致在通过编码表访问字形时出现越界指针。 对于未重绘的位图路径(当 匹配请求的字形宽度时),仅验证了每个字形的偏移量是否在位图缓冲区中,但没有检查完整的字形范围( )是否适合缓冲区。恶意的字体在小型位图缓冲区的末尾附近设置大的字形偏移量,导致在字形被渲染时出现堆缓冲区溢出。 影响范围 该漏洞影响使用 函数处理 PCF 字体的应用程序。 恶意 PCF 字体可以利用此漏洞导致堆缓冲区溢出,可能引发远程代码执行或拒绝服务攻击。 修复方案 在 函数中,对 和编码偏移量进行边界检查,确保它们与每字形指标一致。 验证完整的字形范围( )是否适合缓冲区,以防止堆缓冲区溢出。 POC代码或利用代码 页面中未提供具体的 POC 代码或利用代码。 其他信息 CVE编号: CVE-2020-56002/ZDI-CAN-30559 发现者: 与 Trendi 零日倡议合作的匿名人士 协助者: Claude 签名者: Peter Hutterer 部分来自: