问:我听说一个叫“模糊测试”(Fuzzing)的新技术。这种技术是不是查找出软件漏洞的一个有效方法呢? 答:模糊测试,事实上不是一种新技术。它早在1989年就被威斯康星州的麦迪逊大学Barton Miller教授发明。由于目前人们聚焦于开发更加安全的软件,模糊测试才被更加广泛应用并成为公认的代码测试方法。
在软件测试过程中,一个程序被随机产生的数据大量验证,称为模糊测试。假如一个程序在应对任一的这类数据上失效,开始出现冲突、锁住、消耗大量内存或者产生不可控制的程序错误,开发者就知道代码中某处出现了bug。因此这个缺陷可能在……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
问:我听说一个叫“模糊测试”(Fuzzing)的新技术。这种技术是不是查找出软件漏洞的一个有效方法呢?
答:模糊测试,事实上不是一种新技术。它早在1989年就被威斯康星州的麦迪逊大学Barton Miller教授发明。由于目前人们聚焦于开发更加安全的软件,模糊测试才被更加广泛应用并成为公认的代码测试方法。
在软件测试过程中,一个程序被随机产生的数据大量验证,称为模糊测试。假如一个程序在应对任一的这类数据上失效,开始出现冲突、锁住、消耗大量内存或者产生不可控制的程序错误,开发者就知道代码中某处出现了bug。因此这个缺陷可能在程序发布或者配置前被定位并予以矫正,从而使可能的程序漏洞不出现在程序最终发行版本中。软件测试被频繁地用于测试缓冲区溢出漏洞,而这种溢出在输入字符的数量超出可用的缓冲区空间时候发生。
软件程序有许多种的输入方式,比如鼠标、键盘和触摸屏。另外还包括调用其它程序或植入实用系统中的控制器数据。模糊测试可以有效地找出漏洞,是由于输入一个程序的数据是随机的,因此不会被任何的关于软件应该如何运行的偏见所束缚。当人们自己测试软件的时候,可能作出软件被如何使用的假设,而造成只对特定的输入进行测试。
一个彻底的模糊测试是对有效数据和随机数据的联合调试。有效数据测试防止程序在抵达一个欠缺的代码块前出现拒绝信息。
你必须意识到,虽然通过一个模糊测试,这并不意味着一个程序完全没有bug。软件测试仅仅是随机测试的模拟,是程序行为的一个有限样本的测试。测试可能只展现那些软件可以处理的没有冲突的例外。还有,模糊测试不能测试出开发中出现的逻辑错误。
模糊测试一个大的优点在于它的成本效率;测试通常是自动化的,而且容易配置。模糊测试是一种有效的软件测试方法,但它也只是众多软件测试方法中的一种。静态分析、相互评价和安全代码方法学都是安全软件开发的方法。
作者
相关推荐
-
视频答疑:企业如何开始安全软件开发过程
在本视频中,Veracode公司的高级安全研究员Chris Eng向我们解释了企业应该如何开始他们的改善软件开发过程之旅。
-
软件修复遭遇组织问题怎么办?
财力雄厚的公司都有一些共同点,比如在公司运行应用安全程序方面紧缩预算。一位前CISO表示,无论预算是多少,如果该项目没有正确的领导者,软件修复会遇到组织上的问题。
-
在内部应用安全测试中使用模糊测试
最近,一位研究员用模糊测试发现了许多苹果和微软的漏洞。在内部软件开发过程中如何使用模糊测试来发现漏洞呢?
-
Fuzzing tool帮助Oracle DBA删除SQL注入错误
数据库安全软件厂商Sentrigo Inc.发布了新的开源fuzzing工具FuzzOr,用于识别Oracle数据库软件应用中的漏洞……