编者按:美国时间13日,微软安全风险检测团队的开发主管William Blum在官方博客发表文章,称微软已开发了一种基于神经模糊(Neural fuzzing)的新方法,可用于软件安全漏洞检测。据论智了解,微软安全风险检测的前身是Project Springfield,它是一种面向云服务平台Azure的工具,可以利用人工智能快速、高效地消除软件漏洞。
以下是论智对原文的编译:
微软的研究人员已经开发了一种新方法来检测软件安全漏洞,它结合机器学习和深度神经网络(DNN),能学习以往的经验帮助系统更好地消除漏洞。这个旨在通过增强传统模糊技术的新研究项目名为神经模糊(Neural fuzzing),在一些早期实验中,它显示出了一些优越性。
软件安全检测是一项艰巨的任务,它通常由安全专家通过昂贵而有针对性的代码审计来完成,或使用极其专业、复杂的安全工具来检测和评估。今年7月,微软正式发布一款名为微软安全风险检测(Microsoft Security Risk Detection,MSRD)的工具,大大简化了检测流程,能帮助用户迅速消除漏洞,虽然这是基于云服务平台Azure的工具,但它也适用于window和Linux。
模糊测试(Fuzz testing)
MSRD的关键技术是模糊测试。据了解,模糊测试是一种软件测试技术,它通过向系统输入大量的随机数据,企图使系统崩溃,来发现编码错误和软件、操作系统和网络中的安全漏洞(如缓冲区溢出、内存访问冲突、空指针取消引用等)。
这些随机数据大体可分为以下几类:
-
Blackbox fuzzers。它也被叫做dumb fuzzers,主要依靠输入文件样本产生输出;
-
Whitebox fuzzers。它静态或动态地分析目标程序,或指导搜索新的输入,来发现更多的代码路径;
-
Greybox fuzzers。Greybox fuzzers有点类似Blackbox fuzzers,它无需了解协议或文件本身格式,但是可以利用一个反馈循环来引导搜索,该循环基于程序执行过程中曾观察到的行为。
AFL崩溃报告
神经模糊(Neural fuzzing)
今年早些时候,包括William Blum、Rishabh Singh和Mohit Rajpal在内的一些微软研究人员开启了一个新项目——如何用机器学习和DNN改善模糊技术。具体来说,就是如果把一个机器学习模型插入greybox fuzzer的反馈回路,它能学到什么?
项目刚开始的时候,他们用现有的模糊测试工具和以往数据训练新模型,并测试它的学习效率。之后,他们又把模型移植到American fuzzy lop(AFL)上。William Blum等人尝试了4种不同类型的神经网络,在4个目标程序上进行试验,并使用了4种不同文件格式(ELF、PDF、PNG、XML)的parsers。
实验结果证明,结合神经网络后,AFL在代码覆盖率、唯一代码路径、崩溃方面较之前有显著提升。
-
对于ELF、PNG这两种格式,和原装AFL相比,使用基于长短期记忆(LSTM)神经网络模型的DNN AFL代码覆盖率提升了约10%;
-
经过24小时模糊处理,DNN AFL在PNG上的找到的唯一路径是原有的两倍;
libpng文件parser的输入增益(单位:小时)
- 评估fuzzer的一个比较直观的方法是比较崩溃报告数量。以ELF为例,DNN AFL报告了20多次,而AFL没有报告。这是一个令人惊讶的结果,因为DNN AFL就是在AFL上训练的。此外,微软还检查了两者在其他格式上的崩溃报告情况,发现在基于文本的文件格式,如XML中,DNN AFL的报告数量要高38%。而对于PDF,虽然它们都没有任何报告,但DNN AFL在代码路径上表现更优。
readelf(左)和libxml(右)随时间推移(单位:小时)的崩溃情况
总的来说,除了PDF,使用机器学习模型的AFL比训练前更优秀。而它在PDF上的异常表现则可能是因为启动大型文件时,系统开销太大了。研究人员都开始相信,这种神经模糊的方法更简单、更高效,也更通用。
-
简单。搜索过程不再是复杂的手动档,系统能通过模糊测试工具学习经验,只需提供一些字符序列,它能自行找出各种各样的特征,并推导出哪种类型的输入更重要及测试工具应该在哪方面集中突破;
-
高效。在实验中,DNN AFL在前24小时内找到了更多唯一代码路径,报告了更多崩溃;
-
通用。虽然这些实验只在AFL上进行,但它同样适用于其他工具,如黑盒。
因此,微软认为团队在神经模糊上的研究已经达到了基础目标,虽然目前模型只会模糊位置,但研究人员认为让它学习模糊参数,如变异类型、应用策略,也是可以展望的做法。目前,他们正在考虑推出基于机器学习模型的在线版本,让工具在学习中完成迭代。
英文原文地址:www.microsoft.com/en-us/research/blog/neural-fuzzing/
本文来自机器人之家,链接:https://www.jqr.com/news/008687