乐于分享
好东西不私藏

MuPDF漏洞可将“安全”PDF文件变成系统劫持程序

MuPDF漏洞可将“安全”PDF文件变成系统劫持程序

Artifex MuPDF 框架被发现存在重大安全漏洞。该框架因其处理 PDF、XPS 和电子书的速度和多功能性而备受青睐。此漏洞编号为CVE-2026-3308,属于整数溢出漏洞,CVSS 评分为 7.8,对用户和自动化系统均构成高风险威胁。

问题出在软件的图像处理引擎深处,具体来说是 pdf-image.c 文件中。当 MuPDF 准备渲染图像时,它会根据宽度 (w)、高度 (h) 和每个分量的位数 ($bpc$) 等尺寸计算所需的内存。

技术分析揭示了内存管理中的一个经典疏忽:

“目前的实现方式是使用 SIZE_MAX 而不是 INT_MAX 来验证这些参数,但由于步长计算使用整数大小的值,因此当提供过大的值时,这种检查不足以防止整数溢出。”

当这些“极大值”与整数大小的计算相冲突时,数学运算就会出错。由此产生的损坏、缩小后的值随后会被传递给 fz_unpack_stream 函数。

这个漏洞的危险之处不仅仅在于一个简单的程序错误;更在于计算出错之后发生的事情。由于应用程序认为它需要的内存远小于图像实际需要的内存,因此它会为大量数据分配一个极小的缓冲区。

“这会导致 fz_unpack_stream 写入超出已分配堆缓冲区范围的内容,从而造成堆越界写入。” 虽然这“通常会导致应用程序崩溃”,但真正可怕的情况是,它“可能被利用来实现任意代码执行”。简而言之,一个精心伪装的 PDF 文件可能允许攻击者控制渲染该文件的系统。

该漏洞影响 MuPDF 1.27.0 及更早版本。由于 MuPDF 经常被用作其他应用程序的后端,因此其影响范围很广。

  • 个人用户:打开“特制 PDF”可能会触发该漏洞。
  • 自动化系统:“任何使用 MuPDF 自动处理或渲染不受信任的 PDF 文件的系统都可能受到影响”。

安全界担忧的是,协调披露工作似乎遇到了阻碍。根据CERT/CC 的报告,“无法联系到供应商来协调此次漏洞披露”。

虽然目前已可通过 GitHub 上的 Pull Request (PR) 提交社区驱动的修复程序,但官方厂商的更新仍在等待中。在补丁正式集成之前,专家建议采取以下措施:

  • 避免打开不可信文件:不要处理或查看来自未知来源的PDF文件。
  • 沙盒渲染:使用 MuPDF 的开发人员应该“将文档渲染隔离在沙盒或低权限进程中”。
  • 禁用自动化:关闭传入文件的自动转换或渲染,以防止“零点击”式触发。

想要了解修复进展的人可以下面的链接找到建议的解决方案。

https://github.com/ArtifexSoftware/mupdf/pull/87

参考链接:

https://kb.cert.org/vuls/id/951662