ZDI年度五大漏洞第五弹—ZDI-18-1372,巧妙的绕过
字数 1260 2025-08-29 08:31:41

Adobe Reader JavaScript API 绕过漏洞分析 (ZDI-18-1372)

漏洞概述

本漏洞编号为ZDI-18-1372,涉及Adobe Reader DC中的JavaScript API安全限制绕过问题。攻击者可以利用此漏洞绕过Adobe设计的安全限制,触发Onix解析引擎处理恶意索引文件,可能导致远程代码执行。

技术背景

Adobe Reader的Catalog插件暴露了一组JavaScript API,这些API本应受到严格的安全限制。Adobe在修补相关漏洞后,不仅修复了解析漏洞,还禁用了Catalog插件中能够触发文件格式解析操作的相关JavaScript API。

漏洞发现过程

  1. 研究人员最初发现Catalog插件存在攻击面
  2. Adobe修补后,解析代码仍然启用但触发方式受限
  3. 研究人员Sebastian Apelt (@bitshifter123)发现通过Search插件可绕过限制

漏洞细节

受影响API

search对象的query方法有四种调用方式:

  1. search.query(<word>) - 无安全限制,但不会解析索引文件
  2. search.query(<word>, "Index", <idx-path>) - 有安全限制
  3. search.query(<word>, "Folder", <idx-path>) - 有安全限制
  4. search.query(<word>, "ActiveDoc") - 关键绕过点

绕过机制

使用"ActiveDoc"参数时,Adobe Reader会:

  1. 将嵌入式索引文件自动保存到C:/Users/<user>/AppData/LocalLow/Adobe/Acrobat/DC/Search目录
  2. 开始解析该索引文件
  3. 完全绕过Adobe设计的安全限制

验证步骤

  1. 清除缓存文件:删除C:\Users\<user>\AppData\LocalLow\Adobe\Acrobat\DC\Search下的所有文件
  2. 启动Acrobat Reader DC并附加调试器
  3. onix32!ixCreateIndexManager方法设置断点
  4. 打开PoC PDF文件
  5. 观察四种调用方式的行为差异

漏洞影响

  1. 攻击者可构造恶意PDF文件触发索引文件解析
  2. 可能导致远程代码执行
  3. 绕过Adobe设计的安全限制机制

修复方案

Adobe最终采取的修复措施:

  1. 完全禁用相关解析代码
  2. 虽然影响性能,但彻底消除了攻击面

技术总结

  1. 供应商认为已修复的攻击面可能仍存在绕过方式
  2. 安全限制的实现需要全面考虑所有可能的调用路径
  3. 有时完全禁用有问题的功能是最有效的安全修复方式

防御建议

  1. 及时更新Adobe Reader到最新版本
  2. 禁用不必要的JavaScript功能
  3. 监控异常PDF文件行为

参考资源

  • 原始研究博客
  • ZDI漏洞公告
  • Adobe安全公告

附录:PoC关键代码

// 四种search.query调用方式示例
search.query("test"); // 方式1
search.query("test", "Index", "path"); // 方式2
search.query("test", "Folder", "path"); // 方式3
search.query("test", "ActiveDoc"); // 方式4 - 可触发漏洞

注意:实际利用需要构造嵌入式恶意索引文件,此处仅展示触发机制的关键代码部分。

Adobe Reader JavaScript API 绕过漏洞分析 (ZDI-18-1372) 漏洞概述 本漏洞编号为ZDI-18-1372,涉及Adobe Reader DC中的JavaScript API安全限制绕过问题。攻击者可以利用此漏洞绕过Adobe设计的安全限制,触发Onix解析引擎处理恶意索引文件,可能导致远程代码执行。 技术背景 Adobe Reader的Catalog插件暴露了一组JavaScript API,这些API本应受到严格的安全限制。Adobe在修补相关漏洞后,不仅修复了解析漏洞,还禁用了Catalog插件中能够触发文件格式解析操作的相关JavaScript API。 漏洞发现过程 研究人员最初发现Catalog插件存在攻击面 Adobe修补后,解析代码仍然启用但触发方式受限 研究人员Sebastian Apelt (@bitshifter123)发现通过Search插件可绕过限制 漏洞细节 受影响API search 对象的 query 方法有四种调用方式: search.query(<word>) - 无安全限制,但不会解析索引文件 search.query(<word>, "Index", <idx-path>) - 有安全限制 search.query(<word>, "Folder", <idx-path>) - 有安全限制 search.query(<word>, "ActiveDoc") - 关键绕过点 绕过机制 使用"ActiveDoc"参数时,Adobe Reader会: 将嵌入式索引文件自动保存到 C:/Users/<user>/AppData/LocalLow/Adobe/Acrobat/DC/Search 目录 开始解析该索引文件 完全绕过Adobe设计的安全限制 验证步骤 清除缓存文件:删除 C:\Users\<user>\AppData\LocalLow\Adobe\Acrobat\DC\Search 下的所有文件 启动Acrobat Reader DC并附加调试器 在 onix32!ixCreateIndexManager 方法设置断点 打开PoC PDF文件 观察四种调用方式的行为差异 漏洞影响 攻击者可构造恶意PDF文件触发索引文件解析 可能导致远程代码执行 绕过Adobe设计的安全限制机制 修复方案 Adobe最终采取的修复措施: 完全禁用相关解析代码 虽然影响性能,但彻底消除了攻击面 技术总结 供应商认为已修复的攻击面可能仍存在绕过方式 安全限制的实现需要全面考虑所有可能的调用路径 有时完全禁用有问题的功能是最有效的安全修复方式 防御建议 及时更新Adobe Reader到最新版本 禁用不必要的JavaScript功能 监控异常PDF文件行为 参考资源 原始研究博客 ZDI漏洞公告 Adobe安全公告 附录:PoC关键代码 注意:实际利用需要构造嵌入式恶意索引文件,此处仅展示触发机制的关键代码部分。