文章总结: Libpng库发现已存在30年的严重漏洞CVE-2026-25646,源于png_set_quantize函数的哈希表逻辑错误,导致堆缓冲区溢出,可引发应用崩溃或任意代码执行。该漏洞影响数百万系统,维护者已发布1.6.55版本修复,建议用户尽快升级。 综合评分: 88 文章分类: 漏洞分析,漏洞预警,代码审计,供应链安全
开源库 Libpng 漏洞已存在30年,可导致数百万系统遭代码执行攻击
Guru Baran Guru Baran
代码卫士
2026年2月11日 18:32 北京
聚焦源代码安全,网罗国内外最新资讯!
编译:代码卫士
几乎所有操作系统和网络浏览器都在使用的官方PNG参考库libpng库中存在一个严重漏洞CVE-2026-25646,且该漏洞已存在30年之久。
该漏洞是位于png_set_quantize() 函数中的堆缓冲区溢出问题,可导致应用程序崩溃或使攻击者执行任意代码。该漏洞自从函数png_set_quantize() (此前被命名为 png_set_dither())诞生之日起就已存在,影响该库之前的所有版本。维护人员已发布 libpng 1.6.55 修复该漏洞,并建议直接升级。
已存在30年之久的“遗留” Libpng 漏洞
该函数是一个底层API接口,用于减少图像颜色数量(色彩量化)以匹配显示设备性能。由于一处特定的逻辑错误,攻击者可诱导该函数陷入无限循环,最终读取超出内部堆分配缓冲区末端的数据。
虽然该漏洞的触发条件严格,但在PNG规范下完全有效:
- 图像必须包含PLTE(调色板)数据块,但不能包含hIST(直方图)数据块。
- 应用程序必须请求进行色彩量化处理。
- 调色板中的颜色数量需超过用户显示设备最大支持颜色数的两倍。
该漏洞源于“最近邻颜色”量化算法在处理颜色索引时存在的细微匹配错误。为优化调色板缩减过程,png_set_quantize()函数采用“色彩距离”度量标准(RGB通道绝对差值之和)对相似颜色进行分组。它会构建一个哈希表——本质上是一个由链表组成的数组,将这些距离映射到调色板中的颜色对。
该漏洞的核心在于该哈希表的填充方式与访问方式之间存在冲突:
- 填充阶段:构建哈希表时,代码存储的是中间调色板中颜色的当前索引值。
- 剪枝阶段:在调色板缩减循环中,代码遍历该表以寻找可删除的颜色。然而,循环逻辑错误地假设表中存储的是原始调色板索引。它尝试通过index_to_palette查找表将这些存储的索引转换为当前位置,以验证颜色是否仍然存在。
由于代码将“当前”索引误解为“原始”索引,导致有效性检查全部失败。算法因此无法识别可删除的颜色,造成循环无限持续。变量max_d(最大搜索距离)在尝试寻找更多候选颜色时会不断递增,最终超过哈希表的固定大小(769个指针),迫使程序读取到远超出已分配缓冲区的内存区域。在最可能发生的场景下,该漏洞会导致确定性崩溃(拒绝服务),因为应用程序会尝试读取未映射的内存。然而安全公告警告称,其影响可能更为严重。
修复方案涉及修改哈希表的填充逻辑,使其存储原始颜色索引,从而确保与函数其余部分的逻辑保持一致。该补丁已包含在libpng 1.6.55版本中。由于libpng的应用广泛,因此是漏洞利用开发的高价值目标,强烈建议开发者和用户立即升级至1.6.55版本。
开源卫士试用地址:https://oss.qianxin.com/#/login
代码卫士试用地址:https://sast.qianxin.com/#/login
推荐阅读
Libpng修复已存在20多年的漏洞
Fortinet 修复可导致未认证代码执行的严重 SQLi 漏洞
Anthropic MCP Git 服务器漏洞可用于访问文件和执行代码
n8n严重漏洞可导致任意代码执行
Ivanti提醒注意 EPM 中严重的代码执行漏洞
原文链接
30-Year-Old Libpng Vulnerability Exposes Millions of Systems to Code Execution Attacks
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。
奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。
觉得不错,就点个 “在看” 或 “赞” 吧~
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:代码卫士 Guru Baran Guru Baran《开源库 Libpng 漏洞已存在30年,可导致数百万系统遭代码执行攻击》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论