文章总结: ImageMagickXBM解码器因整数截断致堆溢出:64位行数转32位分配小缓冲,循环仍用原值写入,攻击者上传特制XBM可控越界写任意字节,影响Web、CMS、CI/CD,CVSS8.1,官方已发补丁,需升级至7.1.2-13或6.9.13-38。 综合评分: 90 文章分类: 漏洞预警,WEB安全,应用安全,安全工具,解决方案
ImageMagick 安全警报 (CVE-2026-23876):“XBM”图像上传触发大规模堆溢出
sec随谈 sec随谈
sec随谈
2026年1月21日 08:52 北京
ImageMagick 是一款应用广泛的图像处理库,为从社交媒体平台到内容管理系统等各种应用提供支持。该漏洞被追踪编号为 CVE-2026-23876,攻击者只需上传一个精心构造的 XBM 图像文件,即可触发大规模堆缓冲区溢出。
该漏洞的CVSS 评分为 8.1,对任何处理不受信任图像的 Web 服务都构成重大风险,可能导致内存损坏或崩溃。
该漏洞存在于 XBM 图像解码器 (coders/xbm.c) 中,该组件负责处理 X Window 系统位图格式。根本原因是典型的整数截断——程序认为需要的内存量与实际使用的内存量之间存在数学上的不匹配。
根据漏洞报告,该问题发生在软件计算新图像的缓冲区大小时。它会获取图像的行数(一个 64 位值)并将其转换为 32 位无符号整数。
“在第 349-350 行,image->rows(一个 size_t 类型)被截断为 unsigned int 类型进行内存分配……然而,第 369-377 行的写入循环使用了原始的、未被截断的 image->rows 值。”
这会造成危险的偏差。如果攻击者为图像行提供了一个极大的值(例如 0x500000001),系统会截断该数字,仅分配一个很小的缓冲区(约 1 字节)。然而,后续循环并不会收到此通知;它仍然会根据原始的极大值写入数据。
“循环迭代次数:每行字节数 * 21474836481 → 大量溢出”。
这种溢出攻击之所以特别危险,是因为攻击者拥有极高的控制权。报告指出,“溢出大小”由图像尺寸(行和列)控制,而“写入的数据量”则由 XBM 文件中的十六进制值控制。
这使得攻击者能够将受控字节(0x00-0xFF)写入超出已分配缓冲区的范围,从而覆盖堆上的关键内存结构。
由于 ImageMagick 是 Web 的基础构建模块,因此该漏洞的影响范围非常广泛。报告重点介绍了几个关键目标:
- 网络服务:任何具有图像上传功能的网站,例如缩略图生成器或格式转换器。
- 内容管理系统:像 WordPress 和 Drupal 这样的流行平台通常依赖 ImageMagick 后端来处理媒体库。
- CI/CD 流水线:处理用户提交的图像或资源的自动化系统。
攻击途径很简单:“任何使用 ImageMagick 处理不受信任图像的应用程序”都容易受到简单的网络上传攻击。
该漏洞影响 ImageMagick 7.1.2-13 和 6.9.13-38 之前的版本。
维护人员已发布补丁程序,修复了整数截断逻辑的问题。强烈建议使用 ImageMagick 的管理员和开发人员立即升级到 7.1.2-13 或 6.9.13-38 版本,以降低远程攻击的风险。
参考链接:
https://github.com/ImageMagick/ImageMagick/security/advisories/GHSA-r49w-jqq3-3gx8
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:sec随谈 sec随谈 sec随谈《ImageMagick 安全警报 (CVE-2026-23876):“XBM”图像上传触发大规模堆溢出》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论