模糊测试是安全软件开发方法的一部分吗?

日期: 2008-01-20 作者:Michael Cobb翻译:王震 来源:TechTarget中国 英文

问:我听说一个叫“模糊测试”(Fuzzing)的新技术。这种技术是不是查找出软件漏洞的一个有效方法呢? 答:模糊测试,事实上不是一种新技术。它早在1989年就被威斯康星州的麦迪逊大学Barton Miller教授发明。由于目前人们聚焦于开发更加安全的软件,模糊测试才被更加广泛应用并成为公认的代码测试方法。

     在软件测试过程中,一个程序被随机产生的数据大量验证,称为模糊测试。假如一个程序在应对任一的这类数据上失效,开始出现冲突、锁住、消耗大量内存或者产生不可控制的程序错误,开发者就知道代码中某处出现了bug。因此这个缺陷可能在……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

:我听说一个叫“模糊测试”(Fuzzing)的新技术。这种技术是不是查找出软件漏洞的一个有效方法呢?

:模糊测试,事实上不是一种新技术。它早在1989年就被威斯康星州的麦迪逊大学Barton Miller教授发明。由于目前人们聚焦于开发更加安全的软件,模糊测试才被更加广泛应用并成为公认的代码测试方法。
 
    在软件测试过程中,一个程序被随机产生的数据大量验证,称为模糊测试。假如一个程序在应对任一的这类数据上失效,开始出现冲突、锁住、消耗大量内存或者产生不可控制的程序错误,开发者就知道代码中某处出现了bug。因此这个缺陷可能在程序发布或者配置前被定位并予以矫正,从而使可能的程序漏洞不出现在程序最终发行版本中。软件测试被频繁地用于测试缓冲区溢出漏洞,而这种溢出在输入字符的数量超出可用的缓冲区空间时候发生。
 
    软件程序有许多种的输入方式,比如鼠标、键盘和触摸屏。另外还包括调用其它程序或植入实用系统中的控制器数据。模糊测试可以有效地找出漏洞,是由于输入一个程序的数据是随机的,因此不会被任何的关于软件应该如何运行的偏见所束缚。当人们自己测试软件的时候,可能作出软件被如何使用的假设,而造成只对特定的输入进行测试。

    一个彻底的模糊测试是对有效数据和随机数据的联合调试。有效数据测试防止程序在抵达一个欠缺的代码块前出现拒绝信息。
 
    你必须意识到,虽然通过一个模糊测试,这并不意味着一个程序完全没有bug。软件测试仅仅是随机测试的模拟,是程序行为的一个有限样本的测试。测试可能只展现那些软件可以处理的没有冲突的例外。还有,模糊测试不能测试出开发中出现的逻辑错误。
 
    模糊测试一个大的优点在于它的成本效率;测试通常是自动化的,而且容易配置。模糊测试是一种有效的软件测试方法,但它也只是众多软件测试方法中的一种。静态分析、相互评价和安全代码方法学都是安全软件开发的方法。

相关推荐