CVE-2025-64505libpng是用于应用程序读取、创建和操作PNG(便携式网络图形)光栅图像文件的参考库。在1.6.51之前的版本中,libpng的png_do_quantize函数存在堆缓冲区过度读取(heap buffer over-read)漏洞。当处理包含畸形调色板索引的PNG文件时,该漏洞会被触发。问题根源在于palette_lookup数组边界未对外部提供的图像数据进行验证,允许攻击者构造带有超范围调色板索引的恶意PNG文件,从而触发越界内存访问。虽然CVSS评分为6.1(中等),但该漏洞可能导致敏感信息泄露或应用程序崩溃,对系统可用性造成较高影响。攻击需要本地访问并且需要用户交互(如打开恶意PNG文件),但不需要认证即可利用。
该漏洞位于libpng库的png_do_quantize函数中。在PNG图像处理过程中,当启用调色板量化功能时,该函数会使用palette_lookup数组来查找和映射调色板颜色值。问题在于程序未正确验证palette_lookup数组的访问边界,允许使用超出数组范围的索引进行访问。攻击者可以通过精心构造的PNG文件,在调色板数据中注入超出有效范围(0-255)的索引值。当libpng尝试使用这些畸形索引访问palette_lookup数组时,会触发堆缓冲区越界读取,可能导致:1)敏感内存数据被读取并可能泄露;2)程序行为异常或崩溃;3)在特定条件下可能进一步被利用。该漏洞影响所有使用libpng处理PNG文件的应用,包括图像查看器、浏览器、图形编辑器等。修复版本为1.6.51,主要通过添加数组边界检查来防止越界访问。