找到最奇怪的错误:十款优秀模糊测试工具

在创建应用程序时,程序员会花费大量时间预测用户将如何使用他们的软件以及这些操作会产生什么样的效果。优秀的程序员不仅有着简洁、高效的编码质量,还要考虑到发生意外的情况。但没有人能够预测用户所有的可能操作,尤其是非常规性的操作(比如黑客攻击,安全人员尤其关注这一点),这时就需要模糊测试(fuzzing)。

什么是模糊测试?

模糊测试(以下简称模测)是一个自动化的过程,在这个过程中,测试引擎尝试向应用程序发送大量意外的、错误的或随机的输入,以观察程序的反应。然后,再根据情况编写合适的响应代码,尽可能的保证应用程序的稳定性和安全性。

例如,如果一个电子商务网站用户订购了200亿件紧腰夹克,会发生什么?网站会崩溃吗?会打折吗?或者拿它当正常订单处理吗?再比如,如果用户输入了有效的优惠券代码,但输错了地方会发生什么?回到网络安全上,如果恶意用户输入命令行功能、加密内容、操作系统命令或原始代码,应用程序将如何反应?

一个好的模测引擎可以回答所有这些问题,甚至更多。

模测工具如何工作?

由于模测的价值,有相当多的商业工具售卖,也有数百个优秀程序员在GitHub等平台上共享的免费工具。有不同类别的模测工具,如以发送大量随机信息为特色的,再比如,通过非常规输入来检测运行中的程序,还有专门用于测试可编程接口(API)的工具。

在大多数情况下,模测的目标是生成一些有效的意外数据,当然,至少是能够被测试软件解析器接受的数据。然后,提交应用程序对非正常输入所产生的结果,最为典型的,如程序崩溃。

模测工具可以支持各种编程语言进行测试,主流的如C、C++、Go、Rust、Python、Java、Kotlin、Scala和Swift。还有些测试工具只使用单一语言的应用程序测试。如,Python程序员的特定工具。但不管是哪种语言,合适的才是最好的。

本文尝试推荐一些顶级的模测工具。商业工具来自OWASP网站上的列表,免费工具则是在GitHub上搜索“fuzz”,按“打星”的人气数量排序,同时也兼顾另一个衡量受欢迎程度的指标,即该项目被分叉(fork)的次数。

四款商业模测

1. beSTORM

Beyond Security出品的beSTORM是商业市场上最通用的模测之一。无需访问源代码即可执行测试,几乎可与任何应用程序、协议、语言乃至硬件一起工作,甚至还可以测试为特定行业和特种应用设计的设备和程序。比如物联网、过程控制应用、与can总线兼容的汽车应用、航空工具和低耗能蓝牙设备。

多功能性是beSTORM的最为突出的价值所在,程序员只需学习使用单个界面,就可以针对几乎无限数量的设备或应用程序发起模测。beSTORM测试平台预置了250个测试模块,并且还能轻松地添加新的模块,以覆盖另类或专有的应用程序。

此外,beSTORM还可以作为云服务访问。通过这种方式,一个大型机构可以购买该平台,然后向不同地点的多个用户提供模测工具的使用。

2. CI Fuzz

该工具内置在一个Ubuntu虚拟机中,在本地或云端均可部署。将CI Fuzz集成到CI/CD(持续集成和持续交付)管道中,就可以在每次“pull Request”时自动运行。由于它是CI/CD过程的一部分,所以能够防止程序在有了新的更改时,无意中增加漏洞或破坏程序。如果发生问题也能很快被标记,从而很容易确定何时引入的程序错误。

每当CI Fuzz检测到错误时,它立即开始发送该输入的不同组合,以尝试映射问题的范围。然后生成一份详细的报告,以消除误报,并能够帮助程序员在修复代码时手动重现这些错误。

CI Fuzz引擎需要直接访问被测程序或应用程序的源代码,因此它只支持某些语言和框架,主要为C、C++、Java和Go。但该工具正在努力集成其他框架,如.Net Core和Python。

3. 新思模测套件(FTS)

与大多数产品相比,新思的模测产品有着不同的做法。FTS是一整套测试工具,每一个工具都针对于特定的语言、协议或用例,而不是一个测试工具去匹配尽可能对的应用程序。这种做法的好处在于,用户可以购买他们所需要模测工具,而无需购买他们可能永远不会需要的额外功能。

每个工具都有一组标准的功能,比如一组高度相关的现成测试用例、一个结果和报告分析组件、一个用于配置工具的图形界面,以及如何使用它的说明文档等。

FTS包括各种针对性的测试工具,从DNS服务器等常见组件,到CAN总线或IKEv2等很小众、专业的应用程序。用户购买工具时,还可配送一定程度的支持。

4. Mayhem for Code

ForAllSecure的这款模测具备大多数模测引擎的优点,并兼具额外的学习功能,因此可随着使用时间的延长变得更加高效。该平台可独立运行,尽量减少人工干预。

Mayhem for Code在持续运行期间,可学习环境并挖掘利用系统的深度信息。它甚至可以根据所学到的知识动态生成测试用例。简而言之,使用的次数越多、时间越长,它就能变得愈加高效和独立。

该平台目前可支持多种语言,如Java、Python、Ada、OCaml、Fortran、Jovial、C、C++、Go和Rust,且无需访问源代码。

六款免费/开源模测

1. PeachTech

PeachTech的模测在2020年之前一直都是商业付费产品,直到2020年被GitLab收购,并放出免费版本的PeachTech项目,但不再受支持或更新。

PeachTech投入了大量精力,具有高度可配置性,几乎可以用任何语言或在任何操作系统上运行。然而,其说明文档非常复杂,又取消了产品支持,用户需要了解很多模测试的知识,以及使用的语言或框架,才能获得该工具的益处。非专业人员不适用。

2. Google OSS-Fuzz

谷歌在为Chrome操作系统或浏览器开发新组件时,模测起到了很大的帮助作用,谷歌遂将其开源。

OSS-Fuzz适用于x86-64和i386版本,并利用了其他几种模测引擎,包括AFL++、libFuzzer和Hongfuzz,并支持多种语言,包括C、C++、Rust、Go、Python和Java/JVM代码。

OSS-Fuzz是目前GitHub上评价最高的项目之一,拥有一个很大的社区,并在开源社区中得到很多支持。

3. FuzzDB

FuzzDB本身并不是一个模测引擎,而是一个复杂的攻击载荷库和注入技术库(也许是世界上最大的库),用于破坏或入侵未得到恰当保护的程序和应用。这些攻击以各种方式进行分类,例如按平台类型、已知问题、潜在源暴露,以及许多其他的分类。

FuzzDB库的最佳利用方式,就是与可编程模测引擎结合。将FuzzDB中的攻击模式加载在模测引擎中,配合模测的随机输入,可覆盖很大范围,从已知攻击和漏洞到未知攻击和未发现的漏洞。

4. Ffuf (Fuzz Faster U Fool)

Ffuf是一个用Go语言编写的模测引擎。对于免费工具而言,它好用的出人意料。

它可以执行最常见的模测功能,如检查应用程序对未知的GET和POST请求的反应。Ffuf没有什么用户界面,主要使用命令行功能。但一旦学习了这些功能,就会了解它的强大之处。

Ffuf在GitHub上有许多如何部署的示例,开发人员还会定期发布新的功能和特性。虽然它是免费的,但属于赞助模式,新功能将优先发布给那些付费赞助该工具进一步开发的人。30天后,其他才可以使用新功能。

5. Google ClusterFuzz

Google ClusterFuzz是用来检查Chrome漏洞的模测引擎,它也是上述第二个免费工具OSS-Fuzz项目后端的一部分。但ClusterFuzz适用于任何程序或应用,而不仅仅是开源领域的程序或应用。

有了ClusterFuzz在后端的配合,OSS-Fuzz在谷歌产品中成功发现了超过2.9万个bug,在开源项目中成功发现了2.6万个bug。ClusterFuzz还设计成可在任何环境下运行,并具有高度可扩展性。该项目的GitHub页面列出了ClusterFuzz与10万台虚拟机一起工作的一个项目,可以说满足任何人所需要的可伸缩性。

6. go-fuzz

该平台是一个有着高分评级的模测工具,针对性地测试go语言中的包。它主要用于解析复杂文本和二进制输入的数据包。作者在Github的该项目页面中的说明,go-fuzz对于加固系统尤其有用,这些系统解析来自潜在恶意用户的输入,例如通过网页公开部署的任何内容。

go-fuzz的说明文档很好地描述了使用方法,同时,还附带了一个存储库,包含了大量测试函数和和初始输入设置的许多示例。

观点

模糊测试不再只是一个异想天开的高级选项,来自ISO和其他知名机构的许多重要标准现在都推荐它。可以预见,不远的将来它一定会成为程序测试的其中一个标准。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/131200.html<

(0)
运维的头像运维
上一篇2025-02-26 10:39
下一篇 2025-02-26 10:41

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注