CVE-2024-30350 是 Foxit PDF Reader 中的一个越界读取信息泄露漏洞。该问题由 Trend Micro Zero Day Initiative 以 ZDI-24-333 发布,并在披露前以 ZDI-CAN-22708 进行跟踪。
公开公告将漏洞区域描述为 Foxit PDF Reader 对 Annotation 对象的处理。精心构造的 PDF 可使应用程序读取超出已分配缓冲区末尾的内容。利用该漏洞需要用户交互,例如打开恶意 PDF 文件或访问提供该文件的页面。直接影响是敏感信息泄露,公告指出该条件在与其他漏洞组合利用时可能有用。
本仓库记录了该漏洞、研究工作流程、分类过程以及披露说明。它有意不包含武器化的概念验证。
| 字段 | 值 |
|---|---|
| CVE | CVE-2024-30350 |
| ZDI 公告 | ZDI-24-333 |
| ZDI 案例 | ZDI-CAN-22708 |
| 产品 | Foxit PDF Reader |
| 厂商 | Foxit |
| 组件 | Annotation 对象处理 |
| 弱点 | 越界读取 |
| CWE | CWE-125 |
| 影响 | 信息泄露 |
| CVSS | 3.3 |
| 向量 | CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N |
| 厂商报告日期 | 2023-12-20 |
| 公开公告日期 | 2024-03-28 |
| 公告更新日期 | 2024-07-01 |
| 修复版本 | Foxit PDF Reader 2024.1 和 Foxit PDF Editor 2024.1 安全更新 |
根据 Foxit 2024 年 3 月 5 日的安全公告,受影响的 Windows 版本包括 Foxit PDF Reader 2023.3.0.23028 及更早版本,以及多个 Foxit PDF Editor 发布线中直至公告所列版本的产品。
PDF 注释表示为通过页面的 /Annots 数组附加到页面的字典。阅读器需要解析注释字典,解析直接值和间接值,规范化几何和外观数据,并将结果桥接到渲染、选择、编辑、JavaScript 和无障碍访问路径中。
CVE-2024-30350 的缺陷类别是该注释解析管道中的边界验证失败。格式错误的注释对象可能导致 Foxit PDF Reader 信任一个不再与底层缓冲区匹配的派生长度或对象形状。在易受攻击的路径下,程序可能读取超出已分配对象边界的内容。观察到的故障模式是注释处理期间的访问违规;在内存布局不同的情况下,同一原语可能暴露相邻的进程内存。
该问题不是一键式网络漏洞。攻击者需要说服目标用户打开精心构造的文档,或访问导致该文档被打开的投递页面。这反映在 CVSS 的用户交互要求中。
最初的调查始于对复杂 PDF 对象族的针对性审计,而非通用的文件格式模糊测试运行。选择注释处理是因为注释处于解析器逻辑、UI 行为、JavaScript 暴露和增量文档更新的密集交汇点。
早期语料库混合了普通文档和包含高变异性注释字典的合成页面。生成器改变了数组长度、对象间接引用、空值、意外原始类型、递归引用和外观流组合。最有用的样本并非完全随机。它们具有足够的语法感知能力以到达注释规范化代码,但仍足够畸形以测试原生解析器中的假设。
第一个信号是一个崩溃,仅当页面包含特定的畸形注释结构且注释被强制通过交互处理路径时才会复现。打开文档足以解析页面,但当视图被刷新、页面被缩放,或注释树被选择或渲染代码触及时,可靠复现得到改善。
调试将问题缩小到注释对象处理期间读取超出堆分配末尾的位置。该崩溃不像空指针解引用。失败的指令消耗了与注释相关缓冲区相邻的内存,而最小化样本中的大小关系表明解析出的逻辑计数与该对象实际可用的存储之间存在不匹配。
通过反复移除无关的 PDF 对象、页面资源、字体、元数据和流,直到仅剩页面树、目标页面和注释结构,样本被最小化。缩减后的文件保留了相同的崩溃签名,使其适合协调披露。
分类后,该发现通过 Zero Day Initiative 提交。公开公告中的厂商报告日期为 2023-12-20。协调公告于 2024-03-28 发布,Foxit 在 2024.1 更新线中解决了该问题。
直接影响是泄露 Foxit PDF Reader 进程的内存。单独来看,这通常意味着有限的机密性影响。然而,在更完整的利用链中,越界读取对于泄露堆内容、对象指针、分配布局或其他使单独的内存破坏漏洞可靠利用所需的进程状态可能很有价值。
这解释了为何独立 CVSS 评分较低,同时该问题对于利用链加固仍然有意义。
用户应将 Foxit PDF Reader 和 Foxit PDF Editor 更新到修复版本。处理不受信任 PDF 的组织还应保持启用 Protected View、Safe Reading Mode、文件信誉控制、附件过滤和端点漏洞利用缓解措施。
对于解析器开发者,主要教训是注释字典应被视为不受信任的结构化输入,即使周围的 PDF 在语法上有效。派生长度、规范化数组、解析后的间接对象和缓存的对象表示应在解析器、渲染器、脚本和 UI 代码之间的每个边界处进行验证。
| 路径 | 用途 |
|---|---|
README.md | 主要漏洞概述 |
docs/discovery-process.md | 端到端研究叙述 |
docs/advisory-notes.md |
| 公开公告事实和参考 |
docs/triage-checklist.md | 用于 PDF 阅读器崩溃分类的通用检查清单 |