软件安全测试技术——模糊测试

模糊测试(Fuzz Testing)是将自动或半自动地生成的随机测试数据输入到软件中,通过监视软件是否发生如崩溃、断言失败等异常,以发现可能的软件安全错误。

模糊测试源于1988年威斯康星大学Barton Miller教授的一个课程实验,实验内容是开发一个可以随机生成输入参数以测试Unix程序命令行模糊器。

由于模糊测试的测试数据是随机生成的,能够通过模糊测试的软件表明其可以处理绝大多数的异常情况而不会崩溃,但这并不能说明该软件的安全性得到保证。所以模糊测试不能取代其他的软件安全测试技术,比如静态分析、渗透测试等。

模糊测试过程一般可以分为识别目标、识别输入、生成模糊测试数据、执行模糊测试、监视异常和判定漏洞可利用性等6个基本阶段。

  1. 识别目标

测试人员根据软件安全性需求分析、模拟攻击者、公布的软件漏洞等识别测试目标,再根据测试目标选用模糊测试的技术和方法。不同的测试目标,适用的模糊测试技术和方法是不同的。

  1. 识别输入

测试人员需要根据不同的测试目标,确定需要的测试数据输入类型、输入向量(包括消息头、文件名、环境变量、注册表键值)等。

  1. 生成模糊测试数据

测试人员根据识别的输入类型和输入向量,选择不同的模糊器来生成模糊测试数据。

常用的模糊器有本地模糊器、远程模糊器、内存模糊器和模糊测试框架。本地模糊器主要用来生成本地测试目标的测试用;远程模糊器的测试目标是监听一个具备网络接口的远程软件;内存模糊器的测试目标是运行于内存中的进程数据;模糊测试框架具有可重用性,可以根据需要通过定制来适用于多个测试目标。

由于数据量较大,这个阶段通常会采用自动化方式完成。

  1. 执行模糊测试

执行模糊测试就是将生成的大量模糊测试数据不断发送给待测软件。模糊测试的执行,同样需要使用自动化工具来完成。

没有自动化就没有真正的模糊测试。

  1. 监视异常

测试人员在执行模糊测试的同时,监视软件是否发生异常。通过监视异常可以及时发现软件哪里出现故障,并根据监视的相关信息分析产生故障的原因。。

6.判定漏洞可利用性

测试人员将发现的安全漏洞提交给开发人员,开发人员对其进行是否会被攻击者利用的判定,以避免出现可利用的漏洞没有被修复的情况。

以上是对模糊测试过程的简单介绍。

这正是:

安全测试如何做,它的技术很独特

模糊测试怎么说,随机输入现BUG

参考书目:软件安全开发,作者:吴世忠 李斌 张晓菲 梁洪亮,出版社:机械工业出版社

作者简介:王小双,长期从事GJB5000推广、实施、评价、改进的工作,创建《软件工程之思》微信公众号,一直在《软件工程之思》分享GJB5000、CMMI、软件工程的知识和感悟。现致力于GJB5000咨询以及软件过程改进、软件工程能力提升的研究工作。

软件安全测试技术——模糊测试》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:https://www.hashtobe.com/735.html