谷歌地球尝试验证时检测到错误_自动化工具 谷歌开源开源模糊测试工具ClusterFuzz尝鲜记录(进行中)...

背景

模糊测试,是指用随机坏数据(也称做fuzz)攻击一个程序,然后等着观察哪里遭到了破坏。(出自模糊测试)。一直以来都有大量的模糊测试工具,但大多只集中在数据生成,执行和异常检测依赖人工,未有比较完整的方案。

早在八年前,谷歌内部就在建设和使用模糊测试的工具来测试其内部的应用,而在两年前,谷歌推出了OSS-Fuzz服务,用于给开源项目的进行免费的模糊测试服务,可自动在新版本代码提交后自动完成测试->异常检测->问题登记->老版本问题回归及自动关闭的功能。背后使用的就是ClusterFuzz技术。流程图如下:

0293992bc28315147416c61689d26796.png

而在以前以前,google开源了ClusterFuzz,并解决了初始化ClusterFuzz必须依赖Google Cloud提供的服务这个问题,提供了本地运行的解决方案。根据官方介绍,它具有以下功能:

  • 高度可扩展,谷歌的内部实例运行在超过25000台机器上
  • 准确的去副本化(重复数据删除)
  • 问题追踪器的自动错误预设和关闭
  • 最小化测试用例
  • 通过二分法回归查找
  • 提供分析fuzzer性能和崩溃率的统计信息(不支持本地部署)
  • 易于使用的Web界面,用于管理和查看崩溃
  • 支持引导模糊(例如libFuzzer和AFL)和黑盒模糊测试

其大致执行流程如下:

59539daaf953c438c1847d3705fabde3.png

当然,方案并不完美,如模糊数据统计,崩溃数据统计等功能由于依赖google cloud强大的数据处理能力,本地运行时是用不了的。

官方说的总是美好的,现实是否这么完美呢?曾有人说,实践是检验真理的唯一标准,为了更好地了解这个工具,当然就要本地跑个demo玩下啦。

本地建造及运行

要获得ClusterFuzz的完整功能,需要连接Google Cloud Platform。但结合国情,我们更期望了解它纯本地运行能做到什么,从而以此尝鲜主要尝试纯本地运行。

注意:虽然运行可以脱离Google Cloud Platform,但部分安装时用到的工具需要到google站点下载,所以,你懂得。

以下步骤均是在macOS 10.14上进行。

环境建造

1,下载源码

git clone https://github.com/google/clusterfuzz
cd clusterfuzz

2,安装google cloud sdk

进入https://cloud.google.com/sdk/,按照引导安装sdk并配置好环境变量(mac下可以直接用解压后的脚本install.sh一键安装),确认命令行可调用gcloud命令

$ gcloud -v
Google Cloud SDK 226.0.0
bq 2.0.38
core 2018.11.16
gsutil 4.34

3,安装python和go运行环境。

特别注意:如果您使用的是macOS或Ubuntu,Debain,直接执行第4步即可,脚本里会自动安装Python和go

python要求2.7.10以上,但不能是python3。在mac上可以直接运行brew install python@2安装。

go未要求版本,在mac上可以直接运行brew install go安装。我用的是go1.11.5 darwin / amd64

4,安装其他依赖

针对

  • Ubuntu(14.04、16.04、17.10、18.04、18.10)
  • Debian 8(jessie)或更高版本
  • 带有自制软件的最新macOS版本(实验性)

几个系统,官方已经内置了安装依赖的脚本,直接运行即可:

local/install_deps.bash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值