谷歌开源的 ClusterFuzz 是一个可扩展的模糊测试基础设施,可在软件中发现安全性和稳定性问题。
它被谷歌用于模糊测试 Chrome 浏览器,截至2019年1月,ClusterFuzz 已经在 Chrome 中发现了大约16,000个错误。并且在与 OSS-Fuzz 集成的160多个开源项目中发现了大约11,000个错误。
ClusterFuzz 提供了许多功能,可以将模糊测试无缝集成到软件项目的开发过程中:
- 高度可扩展。 谷歌的内部实例运行在超过25,000台机器上。
- 准确的重复数据删除崩溃。
- 问题跟踪器的全自动错误归档和关闭(仅限现在的单轨)。
- 测试用例最小化。
- 通过二分法找回回归。
- 用于分析模糊器性能和崩溃率的统计信息。
- 易于使用的Web界面,用于管理和查看崩溃。
- 支持覆盖引导模糊(例如libFuzzer和AFL)和黑盒模糊测试。
ClusterFuzz的许多功能都依赖于Google Cloud Platform服务(有关详细信息,请参阅:https://google.github.io/clusterfuzz/architecture/#requirements)。 但是,也可以在没有这些依赖性的情况下在本地运行。
虽然ClusterFuzz可以跨平台运行,但只能在Linux和macOS上进行开发。
以下为ClusterFuzz安装步骤:
1、获取代码
代码语言:javascript复制git clone https://github.com/google/clusterfuzz
cd clusterfuzz
2、安装依赖
- Google Cloud SDK:按照 https://cloud.google.com/sdk/ 的说明进行安装。
- (可选)登录 Google Cloud 帐户:如果您只是在本地运行 ClusterFuzz,则无需执行此操作。
如果您计划在生产环境中设置 ClusterFuzz,则应使用 gcloud 工具对您的帐户进行身份验证:
代码语言:javascript复制gcloud auth application-default login
gcloud auth login
3、安装Python 2.7
可以在 https://www.python.org/downloads/release/python-2715/ 这里下载并安装。
如果您已经安装了Python,则可以通过运行 python -version 来验证其版本。所需的最低版本是2.7.10。
4、安装Go
可以在 https://golang.org/doc/install 这里下载并安装。
5、安装其他依赖项
提供了一个脚本,用于在 Linux 和 macOS 上安装所有其他开发依赖项。
支持的系统包括:
Ubuntu(14.04,16.04,17.10,18.04,18.10)
Debian 8(jessie)或更高版本
macOS with homebrew(experimental)(可以在 https://brew.sh/ 这里下载安装)
运行以下脚本安装依赖项:
代码语言:javascript复制local/install_deps.bash
6、设置环境 virtualenv
激活由 local/install_deps.bash 脚本创建的 virtualenv。此时会加载当前环境中的所有 python 依赖项。
代码语言:javascript复制source ENV/bin/activate
通过运行验证一切正常:
代码语言:javascript复制python butler.py --help