软件测试-file fuzzing

 

关键词:软件测试, fuzzing,  安全, 自动化测试

 

 

Fuzzing是一种基于缺陷注入的自动软件测试技术。通过编写fuzzer工具向目标程序提供某种形式的输入并观察其响应来发现问题,这种输入可以是完全随机的或精心构造的。Fuzzing测试通常以大小相关的部分、字符串、标志字符串开始或结束的二进制块等为重点,使用边界值附近的值对目标进行测试。(This means fuzztesting is an assurance of overall quality, rather than a bug-finding tool)fuzzing不是测试软件正确性,而是一个漏洞发现工具。

 

主要有两种类型的fuzzing技术dumb fuzzing 这种测试无需了解协议或文件本身格式,通过提供完全随机的输入或简单改变某些字节去发现问题。这种方法实现起来较简单,容易快速触发错误,但它的完全随机性会导致产生大量无效的输入或格式。Intelligent fuzzing 研究目标应用程序的协议或文件格式、功能配置,了解各类漏洞的成因,有目的地编写fuzzer。编写有效的fuzzer需要花费时间,但能够对某些感兴趣的部分集中测试,因此更有效。

 

Fuzzing输入数据

 (any type of program input can befuzzed. Interesting inputs include environment variables, keyboard and mouse events, and sequences of API calls. Even items not normally considered"input" can be fuzzed, such as the contents of databasesshared memory, or the precise interleaving of threads.) Fuzzing输入数据可以是环境变量,键盘,鼠标,api调用,数据库内容,共享内存,线程切换。

 

在对目标进行fuzzing的过程中,也可能存在各种问题:校验和、加密、压缩等措施会大大增加fuzzer工具的编写难度;编写智能化的fuzzer依赖目标程序的协议文档,因此协议文档的完整性影响fuzzing测试的效果,等等。Fuzzing测试过程中需要采取措施记录目标的状态,通常通过日志的方式记录下各种信息,以便后续分析。目前比较有名的fuzzer工具有SPIKE和Peach,它们提供了对许多协议接口的支持,现有的许多fuzzer都是基于这两个框架实现的。

 

Fuzzing作用

Fuzzing可以检查崩溃(crash),断言(assertionfailures),内存泄漏(memory leaks), 异常处理(error-handlingroutines), incorrect-serialization,补丁(unintentionaldifferences between two versions)。

 

 

FileFuzz

http://www.fuzzing.org/wp-content/FileFuzz.zip

 filefuzz测试pdfreader

Pdf reader没有出现crash, 同志仍需努力 !!

 

Fuzzing测试问题

1.        Fuzzer简化了测试场景。<Thecomputational complexity of the software testing problem is of exponential order (O(c^n), c>1)and every fuzzer takes shortcuts to find something interesting in atimeframe that a human cares about. >

2.        代码覆盖率

 

 

 

参考资料

《模糊测试-强制性安全漏洞发掘》

http://en.wikipedia.org/wiki/Fuzz_testing


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值