关键信息 漏洞概述 标题: 堆缓冲区越界读取在 中,使用 8 位输入且 启用时出现 严重性: 中等,CVSS 评分为 6.1/10 CVE ID: CVE-2025-64506 类别: CWE-125 (Heap-based Buffer Overflow) 影响范围 受影响的版本: >= 1.6.0, < 1.6.51 修复版本: 1.6.51 漏洞描述 概要: 在 libpng 的 函数处理 8 位图像时,通过简化写入 API 并启用 存在堆缓冲区越界读取漏洞。此漏洞影响 8 位灰度+alpha 图像 (GitHub Issue #688)、RGB/RGBA 图像 (GitHub Issue #746) 和行数据不完整的图像 (GitHub Issue #687)。 漏洞条件: 由于条件判断的误判,允许 8 位数据进入期待 16 位输入的代码路径,导致读取访问超出缓冲区范围。 修复措施: 在 的第 2176 行中,确保两个代码路径都强制满足 16 位输入要求。 影响及风险 信息泄露: 通过堆内存的泄漏 拒绝服务: 应用程序可能因崩溃而导致服务中断 利用条件: 需要触发应用使用带有 启用的简化 API 写入特定格式的 8 位 PNG 图像 解决方案与状态 修复提交: 通过 GitHub PR #749 和 commit 2bd84c0 修复 发布分支: 已在 libpng16 分支中集成,并随 libpng 1.6.51 版本发布 技术细节 导致漏洞的代码片段: 在 中的条件判断错误 修复后的代码片段: 强制检查代码路径中的 16 位输入要求