Firefox 19 附带pdf.js作为默认 PDF 阅读器。
主要的既定目标之一是减少用户接触易受攻击的 Adobe PDF 阅读器/插件的风险。
那么 pdf.js 带来了哪些新的风险呢?
可以让用户浏览到他们的恶意 PDF 的攻击者也可以让用户浏览到恶意网页。无论如何,HTML5 渲染器或 javascript 解释器中的任何漏洞都可能被利用。
Firefox 19 附带pdf.js作为默认 PDF 阅读器。
主要的既定目标之一是减少用户接触易受攻击的 Adobe PDF 阅读器/插件的风险。
那么 pdf.js 带来了哪些新的风险呢?
可以让用户浏览到他们的恶意 PDF 的攻击者也可以让用户浏览到恶意网页。无论如何,HTML5 渲染器或 javascript 解释器中的任何漏洞都可能被利用。
我实际上认为 Mozilla 开发人员对此非常聪明。
从历史上看,大多数 PDF 漏洞都来自渲染引擎而不是解析端。Adobe 很早就意识到格式错误的结构和内容会搞砸他们,并付出了很多努力来确保他们的解析引擎坚如磐石。如果您查看 Adobe Reader 最近的一些 0-day 内容,您会发现其中大部分依赖于渲染引擎中的错误和一些更奇特的内容处理领域。
新的 Firefox PDF 引擎简单地将 PDF 的结构转换为 DOM 结构,该结构可以由浏览器的标准 HTML 渲染器渲染并通过 JavaScript 进行交互。这消除了很大一部分攻击面,并允许他们完全专注于文档翻译引擎的安全性。任何真正可利用的错误都可能依赖于可以通过其他方式利用的次要错误。
如果有漏洞,我看到它们来自以下领域:
总而言之,我认为它不会增加太多的安全风险,一旦它出现几个月,我会认为它是 Adobe PDF 插件的理想替代品,Adobe PDF 插件已经成为许多插件的来源头痛。
漏洞利用大致分为两种不同的类别:破坏实现语言的语义规则(缓冲区溢出、释放后使用、不受控制的类型转换......)和“按规则”运行的漏洞。由于新的 PDF 阅读器是用 Javascript 编写的,第一类的漏洞利用应该非常罕见,因为语言中内置的内在保护(检查数组访问、垃圾收集、强类型......)。要从 Javascript 软件中获取任意代码执行漏洞,您必须在 Javascript 引擎本身中找到一个漏洞;用 Javascript 编写的软件中的漏洞“只会”导致异常,即软件崩溃,这很不方便,但不如看到你的机器被劫持。
据推测,Firefox 中的 Javascript 引擎已经过彻底测试,因为它被大量使用。
“按规则”发挥的漏洞包括围绕同源策略的所有变通办法和滥用本地资源网关。由于 PDF 阅读器是在 Javascript 中实现的,这些本质上并没有变得更难或更容易。然而,正确地做这些事情类似于安全地呈现 Web 内容,这是 Firefox 多年来的主要目标。我们可能希望通过在浏览器中实现 PDF 呈现,他们将能够搭载已经完成的所有艰苦工作,以保护您的浏览器免受恶意网页的攻击。至少,当涉及到将 PDF 脚本包含到适当的沙箱中时,我会更信任那些已经这样做了多年的人(Firefox 开发人员),而不是那些这只是次要工作项目的人,与他们的核心技术不同( Adobe Reader 开发人员)。
所以,为了安全起见,这个新阅读器实际上看起来很有前途。事情变得更好,而不是更糟。
PDF 漏洞利用并未利用 PDF 文件格式。相反,他们正在利用 PDF 阅读器中的漏洞。
如果 PDF 文件包含 Adobe 阅读器的漏洞利用,则使用打开文件pdf.js
将阻止漏洞利用。假设 Mozillapdf.js
定期修复错误,这可以减少 PDF 漏洞的影响。
就像你说的,在 Firefox 中发现的任何漏洞都可以被利用。这可以看作是减少对 Adobe 进行安全更新的依赖的一种手段。