漏洞概述 该漏洞涉及在旋转图像时,tile坐标验证不正确的问题。具体来说,当图像被旋转时,tile坐标的验证逻辑未能正确处理旋转后的坐标,导致可能访问到无效的tile索引,从而引发错误。 影响范围 此漏洞影响使用libheif库处理旋转图像的应用程序。特别是,当图像被旋转90度、180度或270度时,tile坐标的验证逻辑可能会出现错误,导致程序崩溃或返回错误的结果。 修复方案 修复方案包括对tile坐标验证逻辑的改进,确保在图像旋转后,tile坐标的验证能够正确处理旋转后的坐标。具体修改如下: 1. libheif/api/libheif/heif_tiling.cc - 在 函数中,增加了对旋转后tile坐标的验证逻辑。 - 使用 函数来转换请求的tile位置到原始tile位置,并进行验证。 2. libheif/image-items/image_item.cc - 在 函数中,增加了对旋转后tile坐标的验证逻辑。 - 使用 和 来验证tile坐标是否在有效范围内。 - 对于旋转后的tile坐标,使用相应的旋转公式进行转换和验证。 3. tests/grid_tile_missing.cc - 增加了测试用例,验证在旋转图像时,tile坐标的验证逻辑是否正确。 - 测试用例包括构建一个包含旋转图像的HEIF文件,并验证在处理该文件时,tile坐标的验证逻辑是否正确。 POC代码 以下是修复后的关键代码片段: 测试用例 以上代码和测试用例展示了修复后的tile坐标验证逻辑,确保在图像旋转后,tile坐标的验证能够正确处理旋转后的坐标。