对微软开源的模糊测试平台OneFuzz的看法

  • A+
所属分类:安全闲碎

上周微软开源了一款叫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的看法


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


对微软开源的模糊测试平台OneFuzz的看法


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


对微软开源的模糊测试平台OneFuzz的看法


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


对微软开源的模糊测试平台OneFuzz的看法


最后聊点个人看法:

  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环境的因素后续仍需要考虑进去。



对微软开源的模糊测试平台OneFuzz的看法

本文始发于微信公众号(漏洞战争):对微软开源的模糊测试平台OneFuzz的看法

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: