近年来,Fuzzing无疑是漏洞挖掘技术中最热门常见的技术之一,代码覆盖引导的思路成为主流,随之发展起来的各种路径探索技术也应运而生,相关话题的论文也常见于学术与工业顶会上,相信未来几年仍将继续活跃在安全领域之上。笔者日常也多有关注,基于个人的一些洞察与思考,对Fuzzing未来的发展趋势作个简单总结,因个人水平有限,皆为一家之言,仅供参考。
趋势一:CI/CD集成化
将Fuzzing集成进CI/CD,实现“安全左移”。
随着DevSecOps的流行,各种“安全左移”思想盛行,本质上就是希望将发现与解决安全问题的时间点尽可能地提早,并且依赖工具/平台自动化。所以,越来越多的安全系统会通过CI/CD平台将其集成,使得研发过程中,让更多人参与,而不仅仅安全人员来为安全背锅,并且安全测试更加及时。
传统的漏扫、代码扫描都比较常见,但Fuzzing引入CI/CD,国内企业做得并不多。国外的市场相对比较大,像Fuzzit后来就被GitLab收购了,GitHub也在做CI Fuzzing相关研究工作,未来两家均有可能直接基于代管托管平台去支持Fuzzing。
国内一些高校研究者也许看到了商机,已经有多家创业型公司在做这块,打算做成商业化的产品。目前,就国内情况而言,市场的盘子好像没那么大,至少目前如此,这里面涉及到企业代码,很多大厂更愿意自己去做,而不是购买第三方。不像代码托管平台,这种应用场景就非常明确可观。
趋势二:云原生化
借助云原生技术搭建Fuzzing平台,实现大规模化的Fuzz集群管理。
相信大家听过最早最出名的Fuzzing平台应该就是Google ClusterFuzz,已经开源了,但它算不上产品,用过的人都知道,体验其实一般般,界面也非常简陋,但其思想在比较前沿的。
通过云平台来统一管理Fuzzing集群,就非常适合产品繁多,代码量庞大的公司,一些想测试行业产品的第三方公司也适用。加上现在云原生概念的推行,相信未来很多Fuzzing平台会基于云原生技术来搭建,而Qemu Docker k8s可能是最佳的工具搭配。windows系统或软件测试,由于docker环境的局限,可能现在会首选虚拟机集群来调度,而linux,甚至是macOS,都有相应的docker镜像可以支撑,像IoT、Android、iOS平台可能借助Qemu是更好的方案。Docker无疑是云原生化Fuzzing平台建设的主力军,相信未来很多Fuzzing平台的建设会通过它来集群化管理。
趋势三:智能化
探索人工智能在Fuzzing能力上的应用。
人工智能在安全领域的探索一直从未停止过,在恶意检测领域相对还成熟一点,但在Fuzzing上的应用,目前效果和优势还未体现,需要一个时间过程。学术顶会上的见到的探索会多一些,包括AI算法在路径上的探索、测试用例自动生成、Fuzz基准自动化评估、语料构造、根因分析与影响评估等等,都是当前探索的方向。其中以路径探索、用例生成、基准评估最为主流。
在这些探索方向上,近几年的学术顶会贡献要比工业顶会的大,比如粒子群优化、隐马尔科链、导向式、脆弱点预测、符号执行等等在路径探索上的贡献了不少点子,而工业顶会更追求漏洞产出,漏洞利用和危害,一些创新型思路前期可能挖不到啥漏洞的话,可能就没人愿意搞了,这本质上也是学术与工业实践的一点差异。
趋势四:高效化
从软件与硬件层面,去探索更加高效的Fuzzing能力。
Fuzzing时间经常都是比较久,从几小时到几个月都有可能。如果你的Fuzzer测试速度比别人快,那么在这种长时间测试的对比下,整体测试量就往往要比别人多出很大,理论上有可能挖到更多漏洞,假设其它Fuzz能力一致的情况下。
如果实现更高效的运行测试,也是一项值得研究方向。软件层面上,可以探索规模化、并行化的测试算法、更轻量高效的路径引导方式等等;同时,这不仅仅只是软件层面的探索,也包括硬件层面。特别是CPU的新特性,如路径追踪记录能力、运算速度等等都会对Fuzzing效率产生影响。
趋势五:逻辑型探索化
探索逻辑型漏洞的自动化挖掘技术,包括非内存漏洞、逻辑型的内存破坏漏洞等等。
通过Fuzzing挖掘内存破坏漏洞是一种常态,但随着攻防技术的发展,以及类似Go等内存安全型语言的出现,逻辑型漏洞的挖掘会显得更加重要,逻辑漏洞挖掘能力也是当前Fuzzing的劣势之一。如果通过突破Fuzzing在逻辑漏洞挖掘上的局限性,那也是Fuzzing技术的一大突破。
总结
基于个人经验与视角,总结未来Fuzzing技术的五大趋势:CI/CD集成化、云原生化、智能化、高效化、逻辑型探索化。