5月24日,2017年中国网络安全年会在青岛正式开幕。来自腾讯、华为、浪潮、东软等十数家安全厂商的专家、研究人员云集为网络安全建言献策。受近期“WannaCry”病毒危及用户文档的影响,来自腾讯安全联合实验室玄武实验室的技术专家刘科,在安全工匠分论坛上专门针对当下使用极为普遍的PDF文档软件的漏洞挖掘实践进行了主题演讲。
据悉,腾讯安全联合实验室玄武实验室自2015年12月启动PDF漏洞研究以来,一年时间内发现并向软件厂商报告了122个漏洞,涵盖Adobe Acrobat and Reader、Foxit Reader、 Microsoft Edge、Google Chrome和OS X Preview、Adobe Digital Editions等主流阅读器和浏览器。
刘科介绍称,PDF作为一种用户和企业经常使用的文件格式,有着繁琐复杂的代码文档和字体图片等丰富多样的特性,与近期被黑客利用的Office漏洞一样,文件格式往往具有跨平台的特点,一旦文件格式存在安全漏洞,不管目标主机是Windows还是Linux系统都可轻易被攻破。由于这一特性,使得文件格式漏洞攻击越来越受黑客的青睐,若存在文件格式漏洞并被恶意利用,受影响的用户众多,危害性极大。因此,深入分析和研究PDF文件格式漏洞具有非常重要的意义。
刘科在现场对腾讯安全联合实验室玄武实验室团队挖掘PDF漏洞过程中,从寻找PDF攻击面到获取测试样本,以及最终展开PDF漏洞挖掘的技巧和经验进行了深度分享。
期间,针对测试样本,刘科给出了三点建议:
一、更多的测试样本意味着更高的代码覆盖度,而更高的代码覆盖度意味着可以发现更多的Crash;
二、不要轻易浪费测试样本,可以使用 AFL / libFuzzer 对开源库进行 Fuzz,并使用生成的测试样本来测试闭源的二进制文件。
三、复用开源项目的测试集,流行的开源项目通常会维护一个测试集,其中有大量的测试样本(包括合法和非法的样本文件)
而作为外界重点关注的漏洞挖掘技巧分享环节,刘科则在现场向大家作了重点阐述和案例分析:
一、通过编写 PDF 转换器,将文件或者数据转换为 PDF 文件,可以实现只变异感兴趣的文件格式或者数据。需要注意的是,使用第三方的 PDF 库,可控性略差,可能丢失部分测试用例,而自己动手编写的转换器,则完全自主可控,二者可以根据实践环境择优使用。
二、检查是否使用了开源或闭源的第三方库,根据情况对Fuzz 第三方库进行有效利用。在实践过程中发现,使用 AFL / libFuzzer Fuzz 开源库更加高效,即使闭源,单独 Fuzz 库文件也会更加高效。但需要注意的是,第三方库会受到0Day漏洞影响,可能还会受到已知漏洞影响,在利用时需要注意。
针对这项实践技巧,刘科利用LibTIFF案例来做了进一步更加深入的阐述。通过Fuzz第三方库挖掘CVE-2016-5875 LibTIFF PixarLogDecode漏洞的过程中,四款PDF阅读器中仅有Adobe Reader DC未受影响。
三、不要直接 Fuzz 庞大的 PDF 阅读器 / 浏览器;反复的创建进程会耗费大量时间,会使得加载大量不必要的库文件,以及进行大量不必要的初始化操作。在实践过程中,腾讯安全联合实验室玄武实验室发现,GUI可能也是不必要的,但这个要根据具体情况来操作。
四、在编写包装程序(Wrapper)的过程中,建议忽略无关的操作,只关注感兴趣的部分。同时,刘科还分享了有利于程序编写的资源库及方法,开源软件推荐PDFium 的 libFuzzer 模块,Foxit Reader提供SDK,Windows PDF Library提供API,Adobe Acrobat Reader可以通过逆向分析找到接口函数。
针对近期爆发的针对Office文件的“WannaCry”勒索病毒,刘科表示,早在今年3月,微软就已经发布补丁,但由于多数用户未及时升级电脑,因此极易遭受攻击。这在进一步反映出用户对于网络安全的危机意识的薄弱状态之外,也提醒安全厂商,在攻击多样化的今天,研究人员需要继续与时间赛跑,抢在黑客之前挖掘并向厂商报告漏洞。
据悉,此次“WannaCry”病毒爆发后,腾讯安全就迅速组织人力,开发出包括勒索病毒离线版免疫工具、文档守护者工具、文件恢复工具在内的安全工具,第一时间遏制了病毒危害。
刘科在演讲中提醒还公众注意,黑客在寻找漏洞的过程中,永远都是由面到点,层层挖掘,任何一个漏洞都可能造成用户的损失,在网络安全形势日趋严峻的今天,企业和用户再不能抱着过去“离我还很远”的心态来应对。