1、 什么是模糊测试
模糊测试最初是由Barton Miller于1989在威斯康星大学开发的。模糊测试是一种软件测试技术,也是一种安全测试。
模糊测试或Fuzzing是一种软件测试技术,它将称为Fuzz的无效或随机数据放入软件系统,以发现编码错误和安全漏洞。模糊测试的目的是使用自动化或半自动化技术插入数据,并测试系统是否存在各种异常,如系统崩溃或内置代码故障等。
2、为什么要做模糊测试?
- 通常,模糊测试会发现最严重的安全故障或缺陷。
- 与黑盒测试、Beta 测试和其他调试方法一起使用时,模糊测试可提供更有效的结果。
- 模糊测试用于检查软件的漏洞。这是非常具有成本效益的测试技术。
- 模糊测试是黑盒测试技术之一。模糊测试是黑客用来发现系统漏洞的最常用方法之一。
3、如何进行模糊测试
模糊测试的步骤包括基本的测试步骤——
以AFL为例
4、模糊测试器的例子
-
基于突变的模糊器,更改现有数据样本以创建新的测试数据。这是一种非常简单直接的方法,它从有效的协议样本开始,并不断修改每个字节或文件。
-
基于生成的模糊器,根据模型的输入定义新数据。它根据规范从头开始生成输入。
最简单的模糊测试技术形式是将随机输入作为协议数据包或作为事件发送到软件。这种传递随机输入的技术非常强大,可以在许多应用程序和服务中发现错误。其他技术也可用,而且很容易实现。为了实现这些技术,我们只需要改变现有的输入。我们可以通过交换输入位来改变输入。
5、模糊测试检测到的错误类型
-
断言失败和内存泄漏这种方法被广泛用于存在错误影响内存安全的大型应用程序,这是一个严重的漏洞。
- 输入无效
在模糊测试中,模糊器用于生成用于测试错误处理例程的无效输入,这对于不控制其输入的软件很重要。简单的模糊测试可以被称为自动化负面测试的一种方式。
-
正确性错误
模糊测试也可用于检测某些类型的“正确性”错误。例如数据库损坏、搜索结果不佳等。
6、模糊测试的优点
成本较低、效率较高,自动化,容易配置,是一种有效的软件测试方法
7、模糊测试的缺点
- 模糊测试改进了软件安全测试。
- 在模糊测试中发现的错误有时很严重,并且大多数时间都被黑客使用,包括崩溃、内存泄漏、未处理的异常等。
- 如果由于时间和资源的限制,测试人员没有注意到任何错误,这些错误也会在模糊测试中发现。
- 仅凭模糊测试无法提供整体安全威胁或漏洞的完整情况。
- 模糊测试对于处理不会导致程序崩溃的安全威胁,如某些病毒、蠕虫、木马等,效果较差。
- 模糊测试只能检测简单的故障或威胁。
- 为了有效地执行,它将需要大量时间。
- 使用随机输入设置边界值条件非常有问题,但现在使用基于用户输入的确定性算法,大多数测试人员都可以解决这个问题。
参考链接:
https://www.guru99.com/fuzz-testing.html