Fuzz testing 或 Fuzzing 是一种黑盒软件测试技术,它基本上包括在自动化任务中使用格式错误/半格式错误的数据注入来查找实现错误。这种分析是一种软件测试技术,开发人员和渗透测试人员使用该技术来针对意外、无效和随机的数据输入集测试他们的应用程序。然后将根据应用程序抛出的异常或崩溃来注意到响应。此活动向我们展示了应用程序中的一些主要漏洞,否则无法发现这些漏洞。这些包括缓冲区溢出、格式字符串、代码注入、悬空指针、竞争条件、拒绝服务条件和许多其他类型的漏洞。
模糊分析是一种相对简单而有效的解决方案,可以纳入质量保证和安全测试过程。这就是为什么模糊分析有时也称为稳健性测试或否定测试的原因。
Fuzzing 的历史
1989 年,威斯康星大学麦迪逊分校的 Barton Miller 教授和学生们开发了经典的模糊测试。他们(继续)的工作可以在这里找到。它主要面向命令行和 UI 模糊测试,表明现代操作系统甚至容易受到简单模糊测试的影响。
Fuzzing 中的攻击类型
通常Fuzzer(用于模糊测试的程序)会尝试对以下攻击组合:
数字(有符号/无符号整数/浮点数等)。
字符(url,命令行输入)。
元数据:用户输入文本(id3 标签)。
纯二进制序列。
模糊测试的一种常见方法是为每种类型定义“已知危险值”(模糊向量)列表,并将它们注入或重新组合。
对于整数:零,可能是负数或非常大的数字。
对于字符:转义的、可解释的字符/指令(例如:对于 SQL 请求、引号/命令等)。
对于二进制:随机的。
对于字符:转义的、可解释的字符/指令(例如:对于 SQL 请求、引号/命令等)。
Kali Linux 中有不同类别的 fuzzer,可用于测试文件格式、网络协议、命令行输入、环境变量和 Web 应用程序。任何不可信的数据输入源都被认为是不安全和不一致的。例如,应用程序和 Internet 用户之间的信任边界是不可预测的。因此,所有数据输入都应该针对已知和未知的漏洞进行模糊测试和验证。
为什么 Fuzzing 在安全测试中很重要?
模糊测试的目的是基于每个程序中都有等待被发现的错误的假设。然后,系统的方法迟早会找到它们。
Fuzzing 可以为经典软件测试技术(手动代码审查、调试)增加另一个视角,因为它是非人类方法。由于实施该程序所需的工作有限,它不会取代它们,而是一个合理的补充。
原文始发于微信公众号(网安之道):什么是模糊测试(Fuzz Testing)?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论