2021年软件测试工具总结——模糊测试工具
,
模糊测试包括几个基本的测试步骤:确定被测系统->确定输入->生成模糊数据->使用模糊数据执行测试->监控分析系统的行为->输出日志。
目前有三种主要的模糊测试技术:
黑盒随机模糊,对正确格式的输入数据进行随机变异,然后用这些变异的输入运行程序,看是否能够触发异常。这是一种简单的hack,如果一个应用从未进行过模糊测试,可以用这种技术有效地发现应用中的漏洞。 基于语法的模糊,是模糊复杂格式输入的替代方法,需要指定输入格式的输入语法,还指定哪些输入部分要进行模糊化以及如何模糊化。基于语法的模糊生成器会生成许多新的输入,每个输入满足语法编码的约束。基于语法的fuzzing通过模糊生成器的用户的创造力和专业知识来指导fuzzing。 白盒模糊处理,由微软研究院于2008年首创,这种方法包括:动态地执行测试下的程序,并从执行过程中遇到的条件分支收集输入约束。然后,系统地逐个否定所有这些约束,并使用约束求解器求解,其解被映射到执行不同程序执行路径的新输入。使用系统搜索技术重复这个过程,试图扫描程序的所有可行的执行路径。与黑盒随机模糊相比,白盒模糊通常更精确,可以运行更多的代码,从而发现更多的bug。
模糊测试属于动态测试,是一种自动发现软件安全漏洞的经济有效的测试技术,常常会在软件安全开发生命周期中发现非常严重的安全故障或缺陷,例如:崩溃、内存泄漏,未处理的异常等。如果一个软件产品需要处理不可信的输入或者具有大型、复杂的数据解析功能,模糊测试是非常有效的。一旦一个模糊生成器启动并运行,它就可以开始自己寻找缺陷,不需要手动/人工干预。另外,模糊测试有助于发现传统测试方法或手动审计无法检测到的缺陷。
当然,模糊测试无法提供对于一个软件应用在安全威胁或漏洞方面的整体评估,在处理不会导致应用崩溃的安全威胁时效果较差,例如某些病毒、蠕虫、木马等,因此需要结合其它的安全测试手段来保障软件系统的安全。
American Fuzzy Lop(AFL) Radamsa Honggfuzz libufuzzer OSS-Fuzz boofuzz Bfuzz PeachTech Peach Fuzzer Microsoft Security Risk Detection ClusterFuzz Synopsys Defensics Fuzz Testing Fuzzbuzz
WinAFL:Windows版本的AFL,使用DynamoRIO去插桩闭源程序以获取代码覆盖率信息,同时支持硬件PT获取覆盖率信息,但PT获取覆盖率其实并没有插桩获取得全,但速度可能会快一些。
地址:https://github.com/googleprojectzero/winafl
AFLFast:加速版的AFL,Fuzzing速度确实会比原版快一些。
地址:https://github.com/mboehme/aflfast
2. Radamsa
Honggfuzz是由谷歌开发的,和AFL类似,采用遗传算法进行编译,是一个多进程和多线程的模糊生成器,所以用Honggfuzz进行fuzzing的速度非常快,在安全漏洞发现中的表现十分突出。根据该工具开发者的说法,它是唯一找到OpenSSL中导致发布全球安全补丁的关键漏洞的模糊测试工具。
Honggfuzz不仅仅适用于Windows。它可以测试在Linux、Mac甚至Android环境下运行的应用程序。由于它能够在多个平台下工作,Honggfuzz提供了一个完整的示例和测试用例目录,开发人员可以使用这些示例和测试用例,也可以根据自己的需要进行修改。
boofuzz模糊测试框架是基于已经不再维护的Sulley开发的。该工具使用Sulley核心代码,但致力于不断改良。boofuzz是作为Python库安装的。开发人员增加了在线文档、对更多通信媒介的支持、可扩展故障检测和一个易于使用的界面。该工具还将串行模糊测试、以太网和UDP广播添加到了默认功能里。boofuzz还可将测试结果以CSV文件格式导出,以便在修复检出故障时可以先研究所有被触发问题的完整列表。
BFuzz是基于输入的模糊测试器,以URL和浏览器作为其输入方式。这个意义上讲,该工具很像DAST工具,适合重度依赖这些东西的公司企业,因为BFuzz使用类似的测试方法,但找寻不同类型的错误。
地址:https://github.com/RootUp/BFuzz
8. PeachTech Peach Fuzzer
PeachTech Peach Fuzzer是PeachTech公司出品的商业模糊测试工具,很多繁琐的事情都不需要测试人员亲力亲为了。测试人员只需要用该公司所谓的Peach Pit加载并配置该模糊测试引擎即可。
Peach Pit是预先编写好的测试定义,覆盖一系列不同平台。PeachTech表示,每个Pit包含适用特定目标的规范,比如目标摄入的数据结构,数据流入和流出被测设备或应用程序的方式等。这样测试人员就可以几乎不用设置,便能将精力集中在他们的模糊测试上了。用户使用PeachTech创建自己的Pit也很简单,令Peach Fuzzer还可用于专用系统。
由于Peach Fuzzer引擎可以Peach Pit编程的原因,几乎所有系统都在该工具的测试范围之内:Mac、Windows、Linux,也可以用于模糊测试网络协议、嵌入式系统、驱动、物联网设备,只要是能接受命令而易受模糊输入困扰的系统,就能用Peach Fuzzer进行测试。
地址:http://www.peach.tech/products/peach-fuzzer/
AI模糊测试采用机器学习及类似技术查找应用或系统中的漏洞。智能约束算法和遗传算法是两种主流的智能模糊测试算法,上面提到的AFL就是采用遗传算法。此外,还有一些AI模糊测试工具:
地址:https://www.microsoft.com/en-us/security-risk-detection/
10. ClusterFuzz
American Fuzzy Lop (AFL)使用遗传算法。该工具集是基于云的新工具Fuzzbuzz的核心,也是谷歌ClusterFuzz项目的一部分。ClusterFuzz是一个高度可伸缩的模糊测试基础设施,Google使用ClusterFuzz对所有Google产品进行模糊化,并将其作为OSS-fuzz的后端。
地址:https://security.googleblog.com/2019/02/open-sourcing-clusterfuzz.html
11. Synopsys Defensics Fuzz Testing
地址:https://www.synopsys.com/software-integrity/security-testing/fuzz-testing.html
12. Fuzzbuzz
Fuzzbuzz是一个模糊测试平台,通过自动化的复杂的基础设施管理和设置以及与工具的连接,将模糊化集成到DevOps工作流中。该平台在发现缺陷时发出警报,消除重复数据,并对其进行分类,以消除噪音和误报。
地址:https://www.fuzzbuzz.io/