根据定义,在 PDF 文件中包含任何 JavaScript 是危险的,还是仅在 PDF 中使用特定函数(例如eval
)时才危险,在这种情况下,哪些 JavaScript 函数在 PDF 中是危险的?
换句话说:什么时候应该认为 PDF 文件中的 JavaScript 是危险的?
根据定义,在 PDF 文件中包含任何 JavaScript 是危险的,还是仅在 PDF 中使用特定函数(例如eval
)时才危险,在这种情况下,哪些 JavaScript 函数在 PDF 中是危险的?
换句话说:什么时候应该认为 PDF 文件中的 JavaScript 是危险的?
我做了一些额外的搜索,发现了一篇有趣的研究论文(易于阅读,只有 12 页)。这项研究被称为通过 Document Instrumentation 检测 PDF 中的恶意 JavaScript。
在他们的研究论文中,他们介绍了一种上下文感知方法,通过静态文档检测和运行时行为监控来检测和限制 PDF 中的恶意 JavaScript。
以下引文和图表深入了解了他们开发的检测系统如何处理恶意 PDF 检测。
检测架构
我们的系统由两个主要组件组成,前端和后端,分两个阶段工作。在第一阶段,前端组件静态解析文档,分析结构,最后检测包含 JavaScript 的 PDF 对象。然后,在第二阶段打开检测文档时,后端组件检测 PDF 阅读器进程在 JavaScript 执行上下文中的可疑行为并限制恶意尝试。
第一阶段静态分析和仪器
对于可疑的 PDF,前端首先解析文档结构,然后解压缩对象和流。在此过程中提取了一组静态特征。文档解压后,前端将检测它并为 JavaScript 添加上下文监控代码。在某些情况下,如果使用所有者密码对文档进行加密,即文档可读但不可修改的 PDF 模式,我们需要删除所有者密码。借助 [28] 等 PDF 密码恢复工具,可以轻松快速地完成此操作。
第二阶段静态运行时检测
后端组件分两步工作,运行时监控和运行时检测。加载检测的 PDF 时,内部的上下文监控代码将与我们的运行时监控器合作,它会尝试收集潜在感染尝试的证据。当 Javascript 执行到最后或发生关键操作时,运行时检测器将计算一个错误分数。如果恶意评分超过预定义的阈值,则文档将被归类为恶意文档。
该研究论文 (PDF) 的原始 URL 是https://cs.gmu.edu/~astavrou/research/Daiping_dsn14.pdf,也从本答案的开头引用。本文档的镜像/副本可在此处找到http://www.pdf-archive.com/2016/07/25/daiping-dsn14/daiping-dsn14.pdf。
致谢:威廉玛丽学院的 Daiping Liu 和 Haining Wang 以及乔治梅森大学的 Angelos Stavrou。
简短的回答:Acrobat JavaScript 本质上是无害的。
更长的答案:Acrobat JavaScript(PDF 中的 JavaScript)本质上是无害的,因为它在自己的安全环境中运行,并且几乎无法访问外部世界。
但是,可以对可能能够运行恶意代码的服务器(例如使用getURL()
or方法)进行调用,但该代码必须以某种或其他方式被带到涉及的服务器。launchURL()
此外,在上述方法中,某些协议被阻止,例如javascript:
.
如前所述,潜在危险与 PDF 文件大小之间没有关联。创建大小超过 10 MB 甚至 100 MB 的 PDF 非常容易,没有任何问题(对于印前世界,100 MB 被认为是“正常的”,如果不是“小”的话)。
PDF 中可以有合法的 JavaScript。一个无价的工具是pdfinfo,它是poppler-utils的一部分。首先,它告诉您一个 pdf 文件是否包含任何 JavaScript。以防万一,pdfinfo -js
提取完整的 JavaScript 文本。
最低限度的编程技能就足以从无害的脚本中分辨出恶意内容,如下所示:
if (app.viewerVersion < 9.0)
{
if (app.alert(ADBE.Reader_string_Need_New_Version_Msg, 1, 1) == 1)
this.getURL(ADBE.Reader_Value_New_Version_URL + ADBE.SYSINFO, false);
ADBE.Reader_Value_Asked = true;
}
否则,求助于一些 JavaScript 分析工具/站点会有所帮助。
简短的回答:不。
复杂的 PDF 文件可以嵌入 javascript 以在表单中进行验证,当您使用正确的 PDF 阅读器打开它时,允许用户输入数据、单击并发送它们。
通常使用 javascript 的海量 PDF 文件(>5MB)是非常安全的,任何超过 10MB 的文件都是攻击者托管文件的成本负担。尽管如此,总会有例外,例如 PDF 用空垃圾填充以使其变大,但压缩到更小大小并让受害者以自愿的方式解压缩。
专注于 eval 对检测 PDF 恶意软件毫无用处。使用javascript,很容易构造eval而不显示它。
例如,可以使用象形文字来隐藏它。