CVE-2026-22695libpng是一个用于读取、创建和操作PNG(便携式网络图形)光栅图像文件的参考库。该漏洞存在于libpng 1.6.51至1.6.53版本的png_image_finish_read函数中,当处理具有非最小行步长的交织型16位PNG图像并指定8位输出格式时,会发生堆缓冲区越界读取漏洞。此漏洞是CVE-2025-65018修复引入的回归问题。攻击者可通过诱骗用户打开特制的恶意PNG图像文件来触发此漏洞,成功利用可导致敏感内存信息泄露。由于机密性影响较低但可用性影响较高,攻击者可能获取部分堆内存数据或导致应用程序崩溃。该漏洞已在libpng 1.6.54版本中修复。
该漏洞位于libpng库的简化API函数png_image_finish_read中。当处理交织型(interlaced) PNG文件时,该函数需要多次扫描图像数据以重建完整的图像。在处理16位色深的PNG图像并指定8位输出格式时,函数需要进行颜色深度转换。如果转换过程中的行步长(row stride)计算不正确,特别是当行步长大于最小必需值时,函数可能会读取超出为输出缓冲区分配的内存区域。攻击者可以构造一个具有特定行元数据(metadata)的16位PNG文件,使其在转换过程中触发越界读取。由于这是一个回归漏洞,表明之前的CVE-2025-65018修复在某些边界情况下引入了新的问题。攻击者需要本地用户交互(打开文件)才能触发此漏洞,但不需要任何认证。