50天53个漏洞:Adobe Reader 模糊测试结果
nana 安全牛
安全公司 Check Point 使用流行 Windows 模糊测试框架WinAFL进行了为期50天的实验,在 Adobe Reader 中找出53个新关键漏洞。
该公司透露,2017年报告的新漏洞总数约为1.4万个,远远超出以往年份,是2016年的2倍还多。究其原因,可能是模糊测试器(即自动化漏洞查找工具)功能的完善和流行度的上升。
模糊测试器并非新鲜事物,早在20多年前就已出现,但如今变得更加强大和易用了。Fortinet预测AI模糊测试在2019年将迎来增长,因为人工智能能令模糊测试器更加高效。该趋势下零日漏洞利用可能会更加常见,影响设备及系统的安全保护过程。
专业威胁研究人员通常在实验室环境下用模糊测试查找硬件和软件中的漏洞。他们往接口和程序中输入无效或半随机数据,然后观察程序崩溃、潜在内存泄漏、无记录的调试过程跳转、代码断言失败和其他行为。
安全专家往往避免使用模糊测试器,因为他们觉得这是一种麻烦。虽然采用在增加,Check Point 还是想看看有多少触手可得的漏洞被漏掉了。50天的实验期里,他们在 Adobe Reader 中找出了50多个新CVE。平均每天找出一个CVE可不是漏洞研究的正常速度。
Check Point 的报告中称,他们选择了很常见的Windows模糊测试框架WinAFL,测试目标也是所能想到的最普通的 Adobe Reader。50天的时间框架涵盖了整个测试项目:逆向工程代码、搜寻可能有漏洞的库、编写框架,以及运行模糊测试工具。
WinAFL是AFL的Windows分叉,由谷歌 Project Zero 的 Ivan Fratric 创建并维护,是能让研究人员测试闭源程序的另一类工具,在查找文件格式漏洞上很有效果,尤其是对压缩二进制文件而言。
知道WinAFL更善于对付二进制格式,研究人员便选择集中精力攻击特定解析器。问题就在于找到这么一个解释器,并为之编写框架。在模糊测试领域,框架用于针对 Adobe Reader 之类的复杂软件,因为找出目标函数(模糊测试过程的入口点)从本质上讲并不那么容易。
在模糊测试会话开始前,研究人员必须确保总路径数量是在增加的——模糊测试器以该框架探索新路径的标识。如果路径数量是零或者接近于零,那就要调查一下有没有什么问题了。框架的稳定性应该在80%以上,且对模糊测试器的准确性和性能有很大影响。
模糊测试器的运行相当简单直观,但应按下列顺序进行:启动模糊测试器、检查覆盖率和崩溃、调查覆盖、使用cmin,然后重复。应该写个机器人程序来检查所有模糊测试器的状态,绘制每个测试器尝试过的路径,分类崩溃和产生报告,以及重启锁死的模糊测试器。
必须自动化上述操作,否则模糊测试就是相当繁琐而容易出错的。
Check Point 的策略让他们在 Adobe Reader 和 Adobe Pro 中发现了53个关键漏洞,且他们针对不同解析器重复该过程才得出最终的CVE列表。
Check Point 报告:
https://research.checkpoint.com/50-adobe-cves-in-50-days/