[发明专利]一种进行模糊测试的方法及系统有效
申请号: | 200910131170.2 | 申请日: | 2009-04-07 |
公开(公告)号: | CN101859274A | 公开(公告)日: | 2010-10-13 |
发明(设计)人: | 唐文 | 申请(专利权)人: | 西门子(中国)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100102 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 进行 模糊 测试 方法 系统 | ||
技术领域
本发明涉及软件测试技术领域,特别涉及一种进行模糊测试的方法及系统。
背景技术
软件(包括:应用程序、协议等)的安全性测试实际上是在软件输入空间中的一种探测。软件的输入空间由该软件的所有可能的输入、或所有可能的输入的组合构成。以下将软件的每一个可能的输入称为一个输入点。穷举是验证软件行为正确性的一种最直接的方法,然而,穷举对大部分案例来说不具备可操作性,因为通常情况下,软件程序的输入空间非常巨大。相比于穷举的方法来说,模糊测试(Fuzz Testing)是一种更具可行性的黑盒测试方法。
模糊测试是一种软件测试技术,该技术构造一些随机或半随机的数据(称为fuzz)作为被测试软件程序的输入,并观察被测试软件程序的工作状况。模糊测试是检查程序容错性的一种重要的测试手段。如果被测软件程序出错(例如:崩溃了或导致内置的断言验证代码为假),就表明检测出了缺陷。用于产生fuzz数据的程序称为模糊测试器(Fuzzers),模糊测试器是进行渗透测试或其它测试的有效工具。
作为一种黑盒测试工具,模糊测试通常用于大型软件开发项目。模糊测试被认为能够提高软件的安全性,这是因为:模糊测试总是能检测出一些测试人员未能发现的缺陷,这些缺陷往往会被软件测试工程师所忽略。目前,最常用的模糊测试是基于字符的,基于字符的模糊测试提供随机数据流(从文件或其它数据流中提供,例如:从套接字中提供)作为被测软件程序的输入,基于字符的模糊测试正广泛应用于协议或网络服务器的安全性测试。
模糊测试的优势在于:进行测试的成本相对较低、且完全可以自动实现;并且,模糊测试经常能找出比较严重、且可被利用的缺陷(bug),这些bug可被攻击者加以利用。模糊测试的主要问题在于:它大部分时候只能找出一些很简单的缺陷。这是因为:现有模糊测试器大都比较简单、不具备智能性,它们通常都是基于预先定义的模式,并依靠一些杂乱无章的输入去试图找出被测软件程序中新的缺陷,它不具备任何从以往的测试中学习可以帮助它选择出更好的测试用例的能力。
美国专利号为US5805795-A1,发明名称为“用于产生包含计算机程序产品最佳测试用例集的计算机程序产品测试的方法和计算机程序产品,以及选择SAME的方法”的专利中公开了一种方法,该方法包括:1)识别程序执行过程中所获取到的程序块;2)执行遗传算法(GA:Genetic Algorithm)以确定一个测试用例集,该算法能够在最短的时间内获取到最多的被识别的块,并为每一个测试子集确定一个适应度,然后检验测试子集是否包含在另一个表达中从而计算一个新的适应度,直至获取到所有测试用例的适应度。该方法需要获取被测软件程序的源代码,显然,它已经不是一种黑盒测试方案。
http://www.chinaecnet.com/sjyy/sj004632.asp上登载了一篇题为“黑盒测试中遗传算法的应用”的文章。该文章中描述了一种采用遗传算法为测试输入划分等价类,以加速黑盒测试速度的方法。该方法旨在提高测试的功能与效率,并不涉及任何与安全性测试相关的技术内容。
http://www.blackhat.com/presentations/bh-usa-06/BH-US-06Embleton.pdf上登载了一篇题为“sidewinder-一种恶意输入技术的进化向导系统”的文章。该文章描述了一种类似于上述美国专利号为US5805795-A1的专利申请的技术,该技术采用遗传算法作为启发式方法来充当模糊测试的向导。遗传算法的适应度也基于代码覆盖,例如:具有大的代码覆盖率的有用的输入可以达到前所未有的控制流程图区域(CFG:Control FlowGraph)。该技术与美国专利号为US5805795-A1的技术的唯一不同之处在于:该技术无需获取源代码,取而代之的是使用交互式反汇编(IDA)的插件软件微分分析(SDA),对软件进行反编译,并构造相应的控制流程图。但是,对于大部分案例而言,根据软件构造其准确的控制流程图不具备可操作性,而没有控制流程图就无法使用代码覆盖率对遗传算法的适应度进行计算。
由上述可见,尽管相对于完全预先定义的测试用例来说,模糊测试通过随机化处理能够找出一些被忽略的安全缺陷,但是,模糊测试仍然是一种基于预先定义的测试规则的测试,因此,模糊测试仍然过于简单,无法用于在输入空间进行启发式的探测,因而无法保证被测软件程序的安全性。
发明内容
有鉴于此,本发明的主要目的在于提供一种进行模糊测试的方法,以提高被测软件程序的安全性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西门子(中国)有限公司,未经西门子(中国)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910131170.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种图像检索方法
- 下一篇:一项分级别异常处理技术