ImageMagick TIM 解码器整数溢出漏洞剖析:32位系统下的越界读取风险

本文详细分析了ImageMagick图像处理库中一个仅影响32位系统的严重安全漏洞(CVE-2025-66628)。该漏洞源于TIM图像解析器在计算图像大小时未检查整数溢出,导致可触发越界读取和任意内存泄露,严重性评级为高危。

ImageMagick 易受TIM解码器中整数溢出的攻击,导致越界读取(仅限32位系统)

漏洞详情

ImageMagick 的 TIM(PSX TIM)图像解析器中存在一个关键的整数溢出漏洞,位于 ReadTIMImage 函数(文件:coders/tim.c)。代码从文件头读取宽度和高度(16位值),并在不检查溢出的情况下计算 image_size = 2 * width * height

在32位系统(或 size_t 为32位的系统)上,如果宽度和高度值很大(例如65535),此计算可能溢出并回绕为一个小值。这导致通过 AcquireQuantumMemory 进行的小堆分配,而后依赖该维度的后续操作可能触发越界读取。

受影响的包及版本

多个 Magick.NET NuGet 包受到影响:

包名 受影响版本 已修复版本
Magick.NET-Q16-AnyCPU < 14.10.0 14.10.0
Magick.NET-Q16-HDRI-AnyCPU < 14.10.0 14.10.0
Magick.NET-Q16-HDRI-x86 < 14.10.0 14.10.0
Magick.NET-Q16-x86 < 14.10.0 14.10.0
Magick.NET-Q8-AnyCPU < 14.10.0 14.10.0
Magick.NET-Q8-x86 < 14.10.0 14.10.0

脆弱代码

文件: coders/tim.c

1
2
3
width=ReadBlobLSBShort(image);
height=ReadBlobLSBShort(image);
image_size=2*width*height;       // 第234行 - 无溢出检查!

影响

此漏洞可导致任意内存泄露,原因是在32位系统上发生了越界读取。

严重性

此漏洞被评定为高危,CVSS v3.1 基准得分为 7.5

CVSS v3.1 基准向量: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

  • 攻击向量: 网络
  • 攻击复杂度:
  • 所需权限:
  • 用户交互:
  • 范围: 未改变
  • 机密性影响:
  • 完整性影响:
  • 可用性影响:

相关标识符

  • CVE ID: CVE-2025-66628
  • GHSA ID: GHSA-6hjr-v6g4-3fm8

弱点

CWE-125: 越界读取 - 产品读取了超过预期缓冲区末尾或起始之前的数据。

参考信息

  • GHSA-6hjr-v6g4-3fm8
  • dlemstra/Magick.NET@2dfa08e

来源

  • 源码仓库:ImageMagick/ImageMagick

致谢

此漏洞由 Sumitshah00 报告。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计