上周微软开源了一款叫OneFuzz的模糊测试平台,主要是由开发团队驱动的可持续模糊测试平台,通过开发与集成项目对应的Fuzzer工具,在CI构建中持续Fuzz,自动化分析跟踪崩溃,告警通知、远程调试与漏洞重现等功能。

开源地址:https://github.com/microsoft/onefuzz

按官方介绍的功能包括:

  • 可编排的Fuzzing工作流

  • 内置集成Fuzzing,支持团队协作

  • 自动化触发崩溃与去重

  • 按需实时崩溃调试

  • 可观察,可调试

  • 支持Windows与Linux

  • 崩溃报告与通知

OneFuzz依赖于Microsoft Azure云服务,它利用虚拟机规模集(Virtual Machine Scale Sets)可以创建出虚拟机集群,从单一虚拟到上千核计算资源,并自动支持负载均衡。

同时利用 Azure Blob 存储容器去存储每个Fuzz任务的上下文信息,按容器作分类,包括目标程序及依赖、崩溃信息、输入样本等。

在代码仓库中,你可以直接集成OneFuzz去持续Fuzz,比如利用Github Actions去自动部署:

也可以自己本地利用OneFuzz本地命令去创建虚拟机,创建任务去Fuzz,运行效果:

如果发现崩溃可通过Microsoft Teams向团队发送通知:

对于崩溃会自动去重和分析,开发还可直接利用自带命令远程调试:

最后聊点个人看法:

  1. 对于在CICD中实现持续Fuzz的功能是相对比较完整的,与此前CIFuzz思路类似;

  2. 对Microsoft自身产品(Azure、Teams)依赖过重,且都是收费产品,对于其它企业有时比较难照搬使用,想要实现适合自己研发环境的CI Fuzzer只能自己动手,思路上可以借鉴下;

  3. Google的ClusterFuzz要比OneFuzz功能更加强大;

  4. 平台默认采用AFL、libfuzzer、honggfuzz、radamas工具进行Fuzz,皆为主流的有效工具,能否挖到漏洞取决于你的目标(包括基于libfuzzer写的目标程序)和样本,跟OneFuzz平台无关;

  5. OneFuzz对输入样本的处理功能支持较少,fuzzer也很少,估计后续可能会集成ossfuzz;

  6. 搭建成本不低,如果个人使用的话,可以自己写个本地虚拟机(vmware、hyper-V、qemu),docker容器对windows镜像的支持有限,难以应用;

  7. macOS系统经常不在CI Fuzzing的适配环境里,至少当前开源的相关工具多不支持,但现今企业的研发设备都已经配置了mac,比如阿里、腾讯都办公设备现在都是每人一台macbook(本地机器或服务器其实都可以作为Fuzz资源用于CI Fuzz),所以如果要做到CI Fuzzing,mac环境的因素后续仍需要考虑进去。

声明:本文来自漏洞战争,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。