主要观点:Codean Labs 发现 PDF.js 中的漏洞 CVE-2024-4367,攻击者可在打开恶意 PDF 文件时执行任意 JavaScript 代码,影响所有 Firefox 用户及许多使用 PDF.js 的应用,需更新 PDF.js 版本等进行缓解。
关键信息:
- PDF.js 是 Mozilla 维护的基于 JavaScript 的 PDF 查看器,有两种常见使用场景。
- 漏洞与字体渲染代码中的一个疏忽有关,可通过控制
fontMatrix
数组插入任意代码。 - 利用该漏洞可触发警报、获取
window.origin
等信息,在嵌入 PDF.js 的应用中影响更严重,甚至可导致原生代码执行。 - 缓解措施包括更新 PDF.js 到 4.2.67 或更高版本,设置
isEvalSupported
为 false,更新相关 wrapper 库,对node_modules
中pdf.js
文件进行递归检查等。
重要细节: - 字体渲染代码中通过
compileGlyphImpl(...)
方法生成命令列表,transform
命令中的fontMatrix
数组可被控制。 - 不同字体格式中
FontMatrix
的设置方式不同,PDF 中的字体定义由多个对象组成,可在Font
对象的 metadata 中定义FontMatrix
。 - 受影响的版本范围及详细信息,最早可追溯到 2014 年的 v0.8.1181,2016 和 2017 年的某些版本因 typo 未受影响但存在其他漏洞,2024 年 4 月 29 日发布 v4.2.67 修复该漏洞,5 月 14 日 Firefox 等应用包含修复版本,5 月 20 日发布此博客,5 月 22 日更新相关内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。