CVE-2025-68431libheif是一个用于HEIF和AVIF文件格式的解码器和编码器。该漏洞存在于1.21.0之前的版本中,攻击者可以通过构造恶意的HEIF文件来触发堆缓冲区越界读漏洞。当处理overlay图像项目路径时,`HeifPixelImage::overlay()`函数会计算出一个负的行长度值(可能源于未裁剪的overlay矩形或无效偏移),这个负值在转换为`size_t`类型时发生整数下溢。当这个下溢后的大值被传递给`memcpy`函数时,会导致从源平面边界之外读取大量数据,最终引发程序崩溃或潜在的敏感信息泄露。攻击者需要诱骗用户打开特制的HEIF文件才能成功利用此漏洞。
漏洞发生在libheif的`HeifPixelImage::overlay()`函数中。当处理包含`iovl`(overlay)盒子的恶意HEIF文件时,该函数在计算overlay矩形区域时未正确进行边界检查。具体流程如下:1) 解析HEIF文件的overlay项目路径;2) 计算overlay区域时,由于矩形参数未正确裁剪或偏移值无效,产生负数行长度;3) 该负数(row_length)被隐式转换为无符号整数size_t类型,导致整数下溢变成一个极大的正值;4) memcpy调用时使用这个超大的长度参数,从源图像平面的边界之外读取数据;5) 这种越界读取可能导致程序崩溃或泄露堆内存中的敏感信息。攻击者可通过构造包含特殊构造的overlay盒子的HEIF文件来触发此漏洞。