来自3所高校的5名研究人员致力于改进灰盒模糊(Fuzzing)测试方法,并于近期宣称取得了惊人的成果。相比现有模糊测试工具,查找复杂文件解析库中漏洞的效率要高得多。
模糊测试通过向目标应用发送格式不正确的输入来查找软件漏洞。如果软件崩溃或执行非预期操作,就意味着可能存在安全漏洞。
共有3种主流模糊测试方式:
研究人员在安全专家 Michal Zalewski 开发的 American Fuzzy Lop (AFL)模糊测试工具的基础上创建了一款工具,名为AFLsmart,实现了他们所谓的智能灰盒模糊测试(SGF)功能。
专家介绍,AFLsmart在分析结构复杂文件(比如音频、视频、图像、文档和数据库文件)解析库上效率很高。
在基于覆盖面的灰盒模糊测试中,模糊测试工具会就一个种子文件执行随机翻转、删除、拷贝或增加比特的操作,产生新的文件供被测库解析,以便找出潜在漏洞。该测试过程的问题在于,针对复杂文件格式,比特翻转产生不出有效文件。
研究人员通过定义“创新变异操作符”解决了这个问题。这些操作符执行在虚拟文件结构层级而非比特级,可以保留文件的有效性。
研究人员在论文中解释道:
我们引入了一种先进的基于有效性的调度方法,能让SGF花更多时间产生更有可能通过程序解析阶段的文件,有助于暴露出处理逻辑中更深层次的漏洞。
在实验中,研究人员测试了11款处理可执行二进制、图像、音频和视频文件的流行开源库,包括Binutils、LibPNG、ImageMagick、LibJPEG-turbo、LibJasper、FFmpeg、LibAV、WavPack和OpenJPEG。
为进行对比,这些库不仅经受了AFLsmart的测试,也经历了AFL、AFLfast和Peach模糊测试工具的测试。AFLsmart发现了33个漏洞,是AFL和AFLfast发现漏洞数的两倍,而Peach测试工具一个漏洞都没发现。
研究人员利用该新工具所做的所有测试共发现了42个漏洞,其中17个已经被赋予了CVE编号。至于上文提到的33个漏洞,其中8个有了CVE编号。这些安全漏洞的类型包括断言失败、堆栈缓冲区溢出、空指针引用和除零错误。
研究人员计划将AFLsmart开源。
论文链接:
https://arxiv.org/pdf/1811.09447.pdf
AFLsmart模糊测试器GitHub页面:
https://github.com/aflsmart/aflsmart