不要被“模糊”这个词所迷惑。模糊测试是一个非常重要的过程,它有助于发现影响当今复杂应用程序的未知严重错误,有时甚至会暴露出一些让人“脑洞大开”或“冒烟”的奇怪问题。优秀的模糊测试工具往往能够在程序发布或向公众部署之前发现那些难以检测的漏洞“大漏洞”。模糊测试如何工作?模糊测试是针对完整代码的自动化测试过程。在需要完全编译程序的意义上,模糊测试看起来类似于动态应用程序安全测试(DAST)工具。然而,DAST工具和模糊器寻找完全不同的东西。DAST能够扫描漏洞,例如允许黑客执行远程过程调用的漏洞,或围绕暴露的HTTP和HTML接口的薄弱防御。相比之下,模糊测试工具会向应用程序提供意想不到的输入,并发现这样做的奇怪或意想不到的后果。要了解模糊测试的工作原理,我们不妨以网上银行或电子商务应用为例。在银行业务中,如果用户在转账时不小心在金额输入框中输入了负数,程序应该如何处理?转出?在电子商务应用程序中,如果用户试图将数百万甚至数十亿件商品添加到他们的购物车中,会发生什么情况?整个购物网站会崩溃吗?或者只是给他们数十亿的物品?免费商品?只要程序员考虑周到,仔细编写代码,这些业务逻辑错误中的大部分都是可以提前预测到的。但是没有人能够预见所有的情况。在用户面对输入框傻傻的时候,总会出现一些“奇葩”的意想不到的行为。此外,如果攻击者将命令行功能注入应用程序、加密内容、操作系统指令或原始代码,会发生什么情况?模糊测试工具能够测试、发现和报告这些假设。一些模糊测试工具使用随机字符和输入字符串,而另一些则专注于最可能出现问题的区域。例如,对于整数字段,最有可能触发意外程序行为的罪魁祸首是零值、大数和负值。还有其他模糊测试工具在检测目标程序时尝试提供上下文相关但意外的输入。在任何一种情况下,最好的模糊测试工具生成的数据都不能与预期的输入偏离太远,并且不会被软件的解析器立即拒绝为无效输入。相反,它们提供的数据很有可能被程序接受,但不是程序员所期望的。然后,这些工具会报告哪些行为是由被测应用程序中的意外输入触发的。开发人员经常使用许多开源模糊测试工具、一些商业应用工具和各种模糊测试框架。下面我们列出了九种最好的模糊测试工具。九大优秀的模糊测试工具1.效率之王:美国FuzzyLOPA美国FuzzyLOP程序部署配置简单。该程序基于对最佳模糊器操作机制和最有用结果的广泛研究。它旨在最大程度地减少编译查询以返回结果所花费的时间,并最大程度地减少对系统的影响。事实上,美国FuzzyLOP的开发人员对其免提操作的能力非常有信心,以至于几乎没有控制按钮。用户会看到一个漂亮、怀旧的界面,显示模糊器当前正在做什么,以及它找到的结果。但即使开发者对AmericanFuzzyLOP在被测程序中发现漏洞的能力充满信心,该工具也兼容其他的fuzzer,可以生成可供其他更专业的“半自动”fuzzing工具使用的测试数据。这样做可以提高这些工具的效率并减少它们的运行时间。2、慢工细活:RadamsaRadamsa是一线的fuzzer,向程序发送样本查询,触发意想不到的结果。Radamsa最大的卖点是它的准确性。GitLab上的开发人员页面列出了模糊器在流行软件中发现的真实漏洞。虽然用户可能需要花费更多的时间和精力来生成有效的输入,但如果该过程导致更切实、可修复的漏洞,那么花时间是值得的。3.大量结果:Honggfuzz面向安全的Honggfuzz模糊器是多线程的,并经过优化以利用各种系统资源。许多模糊测试工具必须运行多个实例才能达到这种效果,但Honggfuzz会自动使用所有可用的CPU内核来加速模糊测试过程。Honggfuzz不仅适用于Windows,还可以测试运行在Linux、Mac甚至Android环境中的应用程序。由于其跨平台的适用性,Honggfuzz有一系列的示例和测试用例供开发者使用,或者直接套用,或者根据自己的需要修改,或者只是作为简单的设计参考他们自己的模糊测试规则。可能由于能够在多个平台上执行模糊测试,Honggfuzz用于展示开发人员捕获的漏洞利用的页面非常大。根据开发人员的说法,这是唯一可以找出导致全球安全补丁的OpenSSL关键漏洞的模糊测试工具。4.精益求精:LibfuzzerLibfuzzer工具还在开发中,不定期发布新版本。因此,用户应该在开始模糊测试之前检查他们使用的是最新版本。Libfuzzer旨在成为所谓的进化模糊测试工具。该工具将模糊输入提供给目标程序的特定入口点或输入字段,然后根据被测应用程序对这些查询的响应来跟踪代码的哪些其他部分被触及。有了这些新信息,Libfuzzer修改了它的查询,看看它是否可以进一步渗透。这个模糊测试工具的目标是产生比传统模糊测试工具更相关的结果。开发人员表示,该工具已经取得了很多成就,并将继续完善和调整以提高准确性。5.开源医生:OSS-FuzzOSS-Fuzz工具面向开源软件。开发人员希望支持开源社区,因此OSS-Fuzz针对此类应用和程序进行了优化。OSS-Fuzz支持用C、C++、Rust和Go编写的开源程序,尽管开发人员表示其他语言也是可能的。显然,使用OSS-Fuzz帮助开源社区创建更安全的应用程序的目标已经相当成功。OSS-Fuzz在200个开源程序中发现了超过14,000个漏洞。6.瘦骆驼:Sulleyfuzzing框架以电影《怪兽公司》中一身蓝毛的小怪兽命名。Sulley模糊测试框架既是模糊测试引擎又是测试框架。与大多数其他模糊测试引擎不同,Sulley旨在一次无缝运行数天,持续检查应用程序是否对模糊输入有奇怪的响应,然后记录这些结果。此工具适用于想要激活模糊测试引擎然后执行其他操作的用户。数小时或数天后,当他们回来查看时,Sulley已将所有发现记录在一份报告中。Sulley具有许多高级特性,例如基于硬件平台的并行执行能力。该工具还可以自动确定哪些特定的测试用例序列将触发错误,而无需用户编程。Sulley框架在开源模糊测试社区中众所周知,但已经很长时间没有更新了。即便如此,GitHub上免费提供的最新版本在模糊测试世界中很活跃并且运行良好。7.蓝胜于蓝:boofuzzboofuzz工具基于Sulley的模糊测试框架。它的名字也是取自《怪兽公司》,来自小女孩Boo。boofuzz项目是Sulley的“StopChanging”的后续项目。该工具使用Sulley核心代码,但致力于持续改进。boofuzz作为Python库安装。自boofuzz项目发布以来,开发人员添加了在线文档、支持更多的通信媒体、可扩展的故障检测以及易于使用的界面。该工具还在默认功能中添加了串行模糊测试、以太网和UDP广播。boofuzz还可以将测试结果导出为CSV文件,以便在修复检测到的故障时,您可以首先浏览所有触发问题的完整列表。Sulley中的许多已知漏洞已被boofuzz排除,目前正在GitHub上积极更新。8、希望之星:BFuzz是目前比较流行的模糊测试工具之一,目前BFuzz基本还处于beta测试阶段。免费提供,用户可以报告在使用过程中遇到的任何问题,以便开发人员进行修复。话虽如此,BFuzz迄今为止的记录也不容小觑,发现了强制EpiphanyWeb补丁的错误和导致MozillaFirefox触发缓冲区溢出的错误。BFuzz是一种基于输入的模糊器,它将URL和浏览器作为其输入。从这个意义上说,该工具很像DAST工具,适合严重依赖这些东西的公司,因为BFuzz使用类似的测试方法,但寻找不同类型的错误。BFuzz开发人员显然为此付出了很多努力,这个模糊器一定会很强大。YouTube上什至有视频展示了BFuzz工具的使用。9、明智的选择:PeachTechPeachFuzzerPeachTechPeachFuzzer是PeachTech公司出品的商用模糊测试工具,很多繁琐的事情不需要测试人员自己来做。测试人员只需要使用该公司所谓的PeachPit加载和配置模糊测试引擎。PeachPit是涵盖一系列不同平台的预写测试定义。PeachTech表示,每个Pit都包含适用于特定目标的规范,例如目标摄取的数据结构、数据流入和流出被测设备或应用程序的方式等。这允许测试人员在几乎没有设置的情况下专注于他们的模糊测试。用户也可以轻松地使用PeachTech创建自己的Pit,从而使PeachFuzzer也可用于专用系统。因为PeachFuzzer引擎可以使用PeachPit进行编程,所以几乎没有任何系统没有经过该工具的测试。Mac、Windows和Linux都可以测试。它还可用于模糊测试网络协议、嵌入式系统、驱动程序和物联网设备。只要它可以接受命令并且容易受到模糊输入的影响,就可以用PeachFuzzer进行测试。除了PeachFuzzer,安全牛还推荐关注以下四款AI模糊测试工具,或许能帮你找到价值连城的零日漏洞:1.MicrosoftSecurityRiskDetection2.谷歌ClusterFuzz3。SynopsysDefensics模糊测试4。Fuzzbuzz【本文为专栏作者“安安牛”原创文章,转载请通过安安牛(微信?id:gooann-sectv)获得授权】点此查看作者更多好文
