未知的未知:九大模糊测试工具

2020-05-21 13:15:36 IT经理网 安全牛 分享

优秀的模糊测试工具能在程序面向公众发布或部署前,就发现那些难以察觉的漏洞“大坑”。

别被“模糊”这词儿给迷惑了。模糊测试是一个很重要的流程,有助于发现影响当今复杂应用程序的未知关键错误,有时候甚至能暴露出一些让人“脑洞大开”或者“七窍生烟”的奇葩问题。优秀的模糊测试工具常能够在程序面向公众发布或部署前,就发现那些难以察觉的漏洞“大坑”。

模糊测试的工作机制是什么?

模糊测试是针对完整代码的自动化测试过程。从要求程序完全编译这一点来看,模糊测试看起来类似于动态应用程序安全测试(DAST)工具。但是,DAST工具和模糊测试工具查找的是完全不同的东西。DAST能够扫描漏洞,比如可被黑客执行远程过程调用的漏洞,或者围绕暴露HTTP和HTML接口的弱防护。模糊测试工具则与之相反,通过向应用提供非预期输入,找出这么做将导致的怪异或非故意结果。

理解模糊测试的工作原理,我们不妨以网络银行或者电子商务应用为例,在银行业务中,假设用户转账时无意间在金额输入框里输入了一个负数,程序怎么处理?是把钱转入还是转出?而在电子商务应用程序中,如果用户试图往购物车中添加数百万甚至数十亿件商品,会发生什么状况?购物网站会不会整个崩溃?或者直接给他们数十亿的免费商品?

只要程序员考虑周密、代码严谨,大多数此类商业逻辑漏洞都会被事先预测到。但没人能够预想到所有的情况。用户面对输入框犯傻的时候总会出现一些“奇葩”的非预期行为。此外,如果攻击者向应用、加密内容、操作系统指令或原始代码注入命令行函数,又会出现什么情况?

模糊测试工具能够测试、发现并报告这些假设情况。有些模糊测试工具使用随机字符和输入字符串,有些则聚焦最有可能出现的问题领域。例如,就整数字段而言,最有可能触发非预期程序行为的罪魁祸首,就是零值、大数和负值。在检测目标程序时,还有其他一些模糊测试工具会尝试提供上下文相关但非预期的输入。

无论哪种情况,最好的模糊测试工具产生的数据,必然不会偏离预期输入太远,不会马上就被软件的解析器当成无效输入而拒绝。相反,它们提供的数据有很大概率被程序接受,但又是程序员没预料到的。然后,这些工具就会报告被测试应用中非预期输入触发了哪些行为。

开发人员经常会使用很多开源模糊测试工具,少量商业应用工具,以及各种模糊测试框架。

下面我们列出九款最好的模糊测试工具。

九大顶级模糊测试工具

1 效率之王:American Fuzzy LOP

American Fuzzy LOP程序可以轻松部署,配置简单。该程序建立在对最佳模糊测试器运行机制和最有用结果的大量研究基础之上,旨在最小化编译查询返回结果的耗时,尽量降低对系统的影响。

事实上,American Fuzzy LOP的开发者对免干预运行的能力非常自信,以至于几乎没设置什么控制按钮。用户可以看到一个怀旧风的漂亮界面,显示模糊测试器当前执行的动作,以及所发现的结果。

但即便开发者对于American Fuzzy LOP找出被测程序漏洞的能力非常自信,该工具也兼容其他模糊测试器,能够生成可被其他更专业的“半自动”模糊测试工具使用的测试数据。这么做可以提升这些工具的效率,并且减少其运行时间。

2  慢工出细活:Radamsa

Radamsa是一线模糊测试器,向程序发送样本查询,触发非预期结果。

Radamsa最大的卖点就是其准确性。GitLab上的开发者页面列出了这款模糊测试器在流行软件中发现的现实漏洞。尽管用户可能需要多花点时间精力来生成有效输入,但如果这一过程能够产生更多切实的可修复漏洞,那这个时间还是花得很值。

3 战果累累:Honggfuzz

面向安全的Honggfuzz模糊测试器是多线程的,而且经过了优化,可以利用各种系统资源。很多模糊测试工具必须运行多个实例才能达到这种效果,但Honggfuzz自动使用所有可用CPU核心加速模糊测试过程。

Honggfuzz不仅仅适用于Windows,也可以测试在Linux、Mac,甚至Android环境中运行的应用程序。由于其多平台适用的特性,Honggfuzz有一系列例子和测试用例可供开发人员使用,或一字不改直接套用,或根据自身需求加以修改,或者仅做简单参考以便设计自己的模糊测试规则。

可能是由于能在多平台执行模糊测试的能力,Honggfuzz用来展示开发人员捕获漏洞的战果页面相当庞大。开发者介绍,找出引发全球安全补丁的OpenSSL关键漏洞的模糊测试工具仅此一款。

4  精益求精:Libfuzzer

Libfuzzer工具尚在开发过程中,新版本不时发布。因此,使用者应在开始模糊测试会话前,检查自己使用的是否是最新版本。

Libfuzzer旨在成为所谓的演进式模糊测试工具。该工具将模糊输入馈送至目标程序的特定进入点或输入域,然后根据被测试应用程序对这些查询的反应,跟踪该代码还触及了哪些其他部分。获得这些新信息后,Libfuzzer修改其查询,查看自身是否能进一步渗透。

声明:本站部分资源来源于网络,版权归平台彩票app所有,如作者或来源机构不同意本站转载采用,请通知我们,我们将第一时间删除内容。本站刊载文章出于传递更多信息之目的,所刊文章观点仅代表作者本人观点,并不意味着本站赞同作者观点或证实其描述,其原创性及对文章内容的真实性、完整性、及时性本站亦不作任何保证或承诺,请读者仅作参考。
编辑: