模糊测试的综合指南

已发表: 2021-05-17

安全测试是确保您的软件准备好正式发布的最重要步骤之一,无论是出于商业目的还是商业用途。 它允许您检测您的软件可能存在的任何漏洞,并在黑客利用此类漏洞时为其制定对策。

如果您对安全测试感兴趣,现在可以在这里了解事实,但您必须知道的一点是,进行安全测试的方法有很多种,例如风险评估、渗透测试和漏洞扫描。 如果您已经对安全测试稍有熟悉,那么您可能听说过“模糊测试”这个术语。

模糊测试是当今业界相对普遍的测试技术,尤其是微软和谷歌等企业巨头已经使用它十多年了。 但令人惊讶的是,尽管它是一种标准技术,但了解它的人并不多。 话虽如此,本指南旨在从定义开始解释什么是模糊测试。

什么是模糊测试?

模糊测试,或其他人所说的“模糊测试”,涉及将无效或随机数据输入程序,以检测可能导致可利用错误的任何漏洞。 该输入可以是文件的形式,也可以是来自用户的直接输入。 因此,例如,如果您正在构建某种计算程序,您通常需要输入数字或数学运算。 但是,如果您正在进行模糊测试,则必须输入无效输入,例如字母甚至特殊字符。

如果这样做会使程序崩溃或导致任何其他类型的错误,程序员会认为存在漏洞,因此可以修改代码以期解决问题。 乍一看,您会认为模糊测试与漏洞扫描或渗透测试等其他技术相同,但它的流行是有原因的。

为什么公司使用模糊测试?

在安全测试方面,没有万能的解决方案。 每种方法都可以检测到其他方法无法检测到的问题; 有些需要较低的运营成本,而有些则更容易执行。 就像每一种安全测试技术一样,模糊测试以自己的方式是独一无二的。 以下是促使公司使用模糊测试的一些优势。

  • 简单性:您已经知道模糊测试的工作原理——只需将无效输入输入到程序中即可。 对于在安全测试方面缺乏技能和经验的个人或组织而言,流程的简单性通常是一个很大的优势。
  • 自动化:安全测试可能是软件和应用程序开发中的关键步骤,但通常,除了不断测试程序之外,还有其他事情要做。 但是,对于模糊测试,情况就不同了,因为您可以使用模糊器自动化整个过程。

Fuzzer 是负责在给定必要的命令和条件时将数据自动输入程序的工具。 模糊测试能够实现业务自动化这一事实使其成为公司的理想测试技术。

  • 方便:通常,在测试时,需要使用尽可能多的工具来减少错误的可能性并最大限度地提高程序的安全性。 由于模糊测试是可自动化且简单的,因此它是增强软件安全性的便捷方式。

一般来说,模糊测试简单且易于实现,但值得注意的是,模糊测试有各种各样的方法。 根据您使用的类型,测试过程的难度和复杂性可能会有所不同。 关于这一点,这可能是讨论不同类型的模糊测试的好时机。

模糊测试的不同方法

尽管有几种类型的模糊测试,但它们大多彼此相似,只是它们生成的输入不同。 无论如何,有四种模糊测试方法:

  • Dumb Fuzzing:当一个人想要完全随机地生成输入时,他们通常使用一个哑 fuzzer。 哑 fuzzer 是一种在没有程序先验知识或智能的情况下产生输入的工具,因此得名。

例如,如果你正在构建一个语法检查程序,一个愚蠢的模糊器最终可能会生成一个图像,这与程序所期望的相差甚远。 哑模糊测试是最简单的模糊测试方法。

  • 智能模糊测试:硬币的另一面是智能模糊测试。 与哑 fuzzing 不同,智能 fuzzing 在知道程序期望接收什么的情况下生成输入。 此外,智能模糊器不会生成不可避免地会使程序崩溃的输入。 相反,它会提出可能导致意外行为的输入。

因此,在前面的示例中,智能模糊器可能会生成特殊字符,但不会生成图像或任何其他不合适的输入。 尽管智能 fuzzer 比哑 fuzzer 更具挑战性,但它们在大多数情况下更准确。

  • 变异模糊测试:变异模糊测试涉及通过修改或更具体地说,“变异”现有的有效输入来生成输入。 在我们的计算器程序示例中,突变模糊器可以选择现有的有效输入。

假设选择的输入是“10+9”。 突变模糊器将尝试通过添加、删除或更改此输入的一部分来修改此输入,例如增加值并将其转换为“180+129”或将操作更改为“10/9”。

  • 代模糊测试:最后,分代模糊测试从头开始生成输入,这与从现有输入生成输入的突变模糊测试相反。 由于没有参考,世代模糊器比突变模糊器更难实现,但它们可以为测试人员带来更多数据。

使模糊测试比其他技术更有趣的是,您可以组合不同的类型来增强测试工具。 例如,您可以创建一个智能变异模糊器或一个哑代模糊器,具体取决于您的程序需要什么。 也许您可以通过模糊测试执行的无数组合是公司更喜欢模糊测试而不是其他方法的另一个原因。

包起来

一旦您对模糊测试有了更多了解,就很容易理解为什么它会像现在这样流行。 然而,同样值得注意的是,就像任何其他技术一样,模糊测试也有一些缺点。 因此,必须确定模糊测试对您的应用程序或软件的好处多于坏处。 如前所述,软件安全测试没有万能的解决方案,而模糊测试肯定不会是那种解决方案。

对此有什么想法吗? 在下面的评论中让我们知道,或者将讨论带到我们的 Twitter 或 Facebook。

编辑推荐: