查看原文
其他

六年前的循环bug仍影响几乎所有的PDF查看器

代码卫士 2022-04-06


作者:Catalin Cimpanu

翻译:360代码卫士团队



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


这个循环 bug影响文档查看器app Evince中包含的PDF解析器组件。Bogk曾帮助Evince修复这个漏洞并将研究成果发布在2011年混沌通信夏令营活动上。


Bogk发现带有某种机构的PDF文档即PDF文件交叉引用内部xref表格能导致Evince app进入一个连续循环,从而占用所有的本地CPU资源并快速耗尽内存导致Evince app崩溃。


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


重现于流行PDF查看器app中



六年之后,因为存在于大量著名的PDF查看器中它变成了一个大问题。


例如,Böck从PDFium即能让Chrome在不需要任何插件的情况下在浏览器内部转换PDF文档的库中发现了这个循环问题的身影。用于火狐类似功能中的pdf.js库也受影响。Pdf.js还用于GitHub中,用于在网站界面内部转换PDF文档,而无需用户下载文件并在第三方app中查看。GitHub的实现也易受无限循环问题的影响,从而中断PDF在网站上的转换。


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


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


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


Adobe阅读器不受影响



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


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


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



本文由360代码卫士编译,不代表360观点,转载请注明“转自360代码卫士www.codesafe.cn”。



360代码卫士    长按二维码关注我们!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存