【国际资讯】六年前的循环bug仍影响几乎所有的PDF查看器

http://p3.qhimg.com/t011ce646c2f9211bc3.jpg

翻译:360代码卫士

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

概要

德国软件开发工程师Hanno Böck指出,Andreas Bogk曾在2011年从PDF解析库中发现的一个循环bug至今仍影响当前多数主流PDF查看器

这个循环 bug影响文档查看器app Evince中包含的PDF解析器组件。Bogk曾帮助Evince修复这个漏洞并将研究成果发布在2011 Chaos Communication Camp上。

Bogk发现带有某种结构的PDF文档即PDF文件的Cross Reference Table(XREF表)能导致Evince app进入一个连续循环,从而占用所有的本地CPU资源并快速耗尽内存导致Evince app崩溃

这个bug基本上被人们忽略了,因为它从未被堪称重大的安全问题而且仅影响仅安装在Linux桌面的一个小型app。


重现于流行PDF查看器app中

六年之后,发现这个问题存在于大量著名PDF查看器中,于是就变成了一个大问题。

例如,Böck在PDFium库中发现了"loop"bug。而PDFium能让Chrome在不需要任何插件的情况下在浏览器内解析PDF文档。

在Firefox中有着类似功能的pdf.js库也受影响。GitHub网站上也用到了Pdf.js,用于在网站界面内部解析PDF文档,而无需用户下载文件或是在第三方app中查看。GitHub的这种浏览pdf文件的实现方式也易受无限循环问题的影响,从而中断PDF在GitHub上的解析。

WinRT PDF也受影响。它是Edge浏览器的内置PDF查看器,同时也是Windows 8及之后所有版本的默认PDF查看器app即Windows “Reader App”的默认PDF解析器。

同样,开源PDF解析器如GhostscriptQPDF也受影响,也就是说这个问题可能已经扩散到了很多其他部署了这两个项目的web和桌面PDF查看器app中。

Böck将这个老旧问题告知所有受影响的产品厂商,后者正在准备推出补丁。


Adobe阅读器不受影响

Adobe阅读器和苹果的OS X内置PDF查看器app并不受影响。

Böck指出,他通过使用一个模糊测试库分析每个项目的方式发现了这个问题。模糊测试是一种基本的安全测试技术,可处理大量随机输入数据,从而分析某个程序的输出响应是否存在异常。谷歌的安全专家们是模糊测试的狂热爱好者,他们向每个乐意听取自己建议的人都推荐了模糊测试技术。

Böck指责受影响项目的管理员未运行升级的测试套件。测试套件即有问题文件的集合,PDF阅读器都应该在不崩溃的情况下打开这些文件。在理想情况下,软件开发工程师不应该在不通过测试套件的情况下发布app新版本;Böck建议PDF app将Bogk的循环bug演示文件添加到他们的测试案例中。

(完)