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

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

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

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