模糊测试:如何自动创建复杂的测试用例并发现未知错误

640?wx_fmt=jpeg

作者 | Fabien Duchene
译者 | Sambodhi
据 Wikipedia 介绍,模糊测试 (fuzz testing, fuzzing)是一种软件测试技术,其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。模糊测试最早由威斯康星大学的 Barton Miller 于 1988 年提出。他们的工作不仅使用随机无结构的测试数据,还系统的利用了一系列的工具去分析不同平台上的各种软件,并对测试发现的错误进行了系统的分析。此外,他们还公开了源代码,测试流程以及原始结果数据。模糊测试工具主要分为两类,变异测试(mutation-based)以及生成测试(generation-based)。模糊测试可以被用作白盒,灰盒或黑盒测试。文件格式与网络协议是最常见的测试目标,但任何程序输入都可以作为测试对象。常见的输入有环境变量,鼠标和键盘事件以及 API 调用序列。甚至一些通常不被考虑成输入的对象也可以被测试,比如数据库中的数据或共享内存。对于安全相关的测试,那些跨越可信边界的数据是最有趣的。比如,模糊测试那些处理任意用户上传的文件的代码比测试解析服务器配置文件的代码更重要。因为服务器配置文件往往只能被有一定权限的用户修改。今天,我们翻译并分享了全球公认的世界级安全专家、模糊测试专家 Fabien Duchene 的文章 《Fuzzing: How to Automatically Create Complex Test Cases and Uncover Unknown Bugs》,以飨读者。

许多开发人员都听说过,在产品开发过程的早期修复 bug,要比在产品发布之后修复 bug 更划算、更高效。这是真的!许多研究表明,随着产品在软件开发生命周期(Software Development Life Cycle,SDLC)中的发展,修复安全漏洞的成本将呈指数级增长。2001 年,Soo Hoo 等人计算出,在部署阶段修复一个 bug,要比在开发阶段进行修复要贵 100 倍。

技术娴熟的研究人员可以利用安全漏洞来制造系统越狱,这样就避免了必须使用应用商店来安装移动应用程序,而 Apple、Google 和 Samsung 等公司很大一部分收入都来自于应用商店!大家都还记得 2016 年 Samsung Galaxy Note S7 电池爆炸的事件吧?据估计,这事件让公司造成了高达 170 亿美元的损失!

几年前,法国数据保护机构法国数据保护局(CNIL)对一家房屋协会处以 7.5 万欧元的罚款,理由是该协会的系统缺乏安全性。虽然对跨国公司来说,这笔罚款不算多;但对小企业来说却是一笔不小的罚款。现在,随着 GDPR 法律的推进,一家公司可以被处以相当于全球年收入 4% 的罚款!想象一下,欧盟委员会能从 Google 这样的互联网巨头那里拿到多少钱,要知道,Google 在 2018 年的收入可是高达 1362.2 亿美元啊!

模糊测试的定
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值