收藏本站 收藏本站
积木网首页 - 技术学院 - 软件测试 - 网站黄页 - 常用手册 - 站长工具 - 技术社区
软件测试 > 其它测试技术 > 正文

首页 | 领域细分: 游戏测试 安全测试 手机测试 Web测试 | 技术研究: 单元测试 入门教程 用例设计 性能测试 功能测试 | 测试职场: 面试精选 职场发展 面试试题

测试管理: 配置及流程 - 需求管理 - 质量验收 - 缺陷管理 - 其它管理相关 | 开发语言: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码

测试工具: LoadRunner JiRa QuickTestPro RoBot WinRunner TestDirector 其它测试工具 | 数据库: Mysql数据库 Oracle数据库 CSS/DIV基础 HTML基础

对Office产品用模糊测试

来源:互联网 日期:2014-09-08 14:00

  一位研究员最近用模糊测试发现了许多苹果和Office的漏洞。在内部软件开发过程中如何使用模糊测试来发现漏洞呢?

  现在,很多软件开发员、正规的安全研究者和网络罪犯都在使用模糊测试技术——一种用大量无效的、意料之外的,或者随机的数据来轰击运行中的程序的输入的技术——来测试代码的坚固性。如果模糊数据导致程序在响应这个参数操作时出现失效、崩溃、锁起、消耗内存,或者不可控制的错误的话,开发者或研究者就会知道代码中存在缺陷。这就是模糊工具常被称为错误注入器的原因,而模糊测试也被称为坚固性测试或者负面测试。最初的模糊工具Fuzz是Wisconsin Madison大学的教授Barton Miller和他的学生们在1989年开发的。

  微软通过运行上百万次的模糊测试在Office2010中发现了超过1800个错误,这些测试不光在他们实验室的机器上运行,也在他们公司内部的闲置个人计算机上运行。早期模糊测试需要测试员在一台机器上设置一个模糊测试软件,然后让它运行一个星期。我认为你的应用程序不太会和微软Office一样大型和复杂,但是可以肯定模糊测试一样会在你的软件开发生命周期中发挥作用。

  由于模糊测试生成无效的输入,它对测试错误处理流程和发现缓冲区溢出、拒绝服务(DoS)、SQL注入、跨站点脚本(XSS)和格式化字符串漏洞很有效果。它在发现C或者C++程序中和内存相关的漏洞(可能会成为安全漏洞)方面也很有用。显然,你需要保存模糊测试中所生成的数值,并保留模糊测试器所生成的任何debug信息,这样如果发生了一个错误,你就可以重现它。实现这一目的的最佳办法是建立一个简单的测试来隔离错误,并使得问题更容易理解和解决。

  模糊测试的一个常见方式是定义危险值列表,也就是模糊载体,然后把它们注入到程序中。例如,在程序要求输入正的整数的时候,你应该给它输入零、负数以及很大的数字。对字符,你会输入可识别的字符、引用和系统命令,而如果应用程序读取或者使用其他文件,你会给它发送损坏的或者意料之外的文件格式。不过一个模糊测试器对应用了解的越多,就越不太可能发现“非常规”错误。所以一些程序员喜欢使用穷举和随机的方法,不用对软件行为有任何的预知。模糊测试可以帮助发现潜在的逻辑错误,但是要重现那个引起程序逻辑错误的事件和值可能会很困难。由于不同的模糊测试器会发现不同的漏洞,用不同的测试器运行不同的测试可能会很有用。你可以尝试的一些免费的测试器包括JbroFuzz、WSFuzzer、Powerfuzzer和SPIKE。

  在内部软件的开发流程中增加模糊测试肯定会提高软件的可靠性和安全性,因为它可以发现那些通常代码检查和人工测试很难发现的错误。由于这个方式涉及到使用那些被黑客用来发现漏洞的工具,它还可能帮你赶在黑客之前发现漏洞。但是,模糊测试需要与其他测试技术相结合;模糊器不总能发现那些不会引起程序崩溃的漏洞,例如加密或者其他的数据保护流程的不足。重要的是要把模糊测试作为一个漏洞发现方式,而不是一种质量保证方式。

本周排行

别人正在浏览

强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号