Top Related Projects
A self-hosted Fuzzing-As-A-Service platform
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
OSS-Fuzz - continuous fuzzing for open source software.
Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.
Quick Overview
ClusterFuzz is an open-source fuzzing infrastructure developed by Google. It automates the process of finding security vulnerabilities and stability issues in software by continuously running fuzz tests on a large scale. ClusterFuzz is designed to work with various fuzzing engines and can be deployed on both cloud and on-premise infrastructure.
Pros
- Scalable and efficient fuzzing infrastructure capable of running thousands of fuzzers in parallel
- Supports multiple fuzzing engines, including libFuzzer, AFL, and Honggfuzz
- Provides comprehensive crash analysis and deduplication features
- Integrates well with continuous integration systems and bug trackers
Cons
- Complex setup and configuration process, especially for large-scale deployments
- Requires significant computational resources for optimal performance
- Learning curve for effectively utilizing all features and customizing the system
- Limited documentation for advanced use cases and troubleshooting
Getting Started
To get started with ClusterFuzz, follow these steps:
-
Clone the repository:
git clone https://github.com/google/clusterfuzz.git
-
Install dependencies:
python3 -m pip install -r requirements.txt
-
Set up a local instance:
python3 local/local_instance.py setup
-
Run the local instance:
python3 local/local_instance.py run
-
Access the web interface at
http://localhost:8000
For more detailed instructions and advanced configuration options, refer to the official documentation in the repository.
Competitor Comparisons
A self-hosted Fuzzing-As-A-Service platform
Pros of OneFuzz
- Built on Azure, offering seamless cloud integration and scalability
- Supports a wider range of programming languages and platforms
- Provides a more user-friendly CLI and API for easier integration
Cons of OneFuzz
- Less mature project with fewer community contributions
- Limited documentation compared to ClusterFuzz
- Lacks some advanced features present in ClusterFuzz, such as coverage-guided fuzzing
Code Comparison
OneFuzz (Python):
from onefuzz import Onefuzz
of = Onefuzz()
job = of.template.basic(
project="example",
name="my-fuzzing-job",
build="1.0",
target_exe="./target",
inputs="./inputs",
)
ClusterFuzz (Python):
from clusterfuzz import Fuzzer
fuzzer = Fuzzer()
fuzzer.create_job(
name="my-fuzzing-job",
target_path="./target",
corpus_path="./inputs",
)
Both projects aim to provide automated fuzzing capabilities, but they differ in their implementation and target environments. OneFuzz is designed for Azure integration, while ClusterFuzz is more platform-agnostic. The code examples demonstrate the slightly different approaches to creating fuzzing jobs, with OneFuzz using a template-based system and ClusterFuzz using a more direct method.
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Pros of AFLplusplus
- More lightweight and focused on fuzzing specific targets
- Highly customizable with various mutation strategies and instrumentation options
- Actively maintained with frequent updates and community contributions
Cons of AFLplusplus
- Limited scalability for large-scale fuzzing campaigns
- Requires more manual configuration and setup compared to ClusterFuzz
- Less comprehensive reporting and management features
Code Comparison
AFLplusplus example (basic usage):
afl-fuzz -i input_dir -o output_dir -- /path/to/target_binary @@
ClusterFuzz example (job configuration):
fuzz_target:
binary: /path/to/fuzz_target
engine: libFuzzer
sanitizer: address
Summary
AFLplusplus is a powerful and flexible fuzzing tool suitable for focused testing of specific targets, while ClusterFuzz offers a more comprehensive and scalable solution for large-scale fuzzing campaigns. AFLplusplus provides greater customization options but requires more manual setup, whereas ClusterFuzz offers better management and reporting features but may be overkill for smaller projects.
OSS-Fuzz - continuous fuzzing for open source software.
Pros of OSS-Fuzz
- Specifically designed for continuous fuzzing of open-source projects
- Integrates with multiple fuzzing engines (libFuzzer, AFL++, Honggfuzz)
- Provides a streamlined process for adding new projects to the fuzzing ecosystem
Cons of OSS-Fuzz
- Limited to open-source projects, not suitable for proprietary software
- Requires more manual setup and configuration for each project
- Less flexible in terms of customization compared to ClusterFuzz
Code Comparison
OSS-Fuzz (project configuration):
language: c++
primary_contact: "project-maintainer@example.com"
auto_cc:
- "security-team@example.com"
sanitizers:
- address
- undefined
ClusterFuzz (job configuration):
CUSTOM_BINARY = True
APP_NAME = 'example_app'
APP_ARGS = ['--enable-logging', '--verbose']
FUZZER_NAME = 'libFuzzer'
MAX_TESTCASES = 10000
The code snippets demonstrate the different approaches to project configuration between OSS-Fuzz and ClusterFuzz. OSS-Fuzz uses a YAML file for project-specific settings, while ClusterFuzz employs Python scripts for more detailed job configurations.
Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.
Pros of FuzzDB
- Lightweight and easy to integrate into existing projects
- Extensive collection of attack payloads and patterns
- Regularly updated with new fuzzing techniques and vulnerabilities
Cons of FuzzDB
- Lacks automated fuzzing capabilities
- Limited reporting and analysis features
- Requires more manual effort to set up and execute fuzzing tests
Code Comparison
FuzzDB (example of a SQL injection payload):
' UNION SELECT NULL,NULL,NULL--
ClusterFuzz (example of a fuzzing configuration):
fuzz_target = 'my_fuzz_target'
max_len = 1024
dict_path = 'dictionaries/my_custom_dict.txt'
Summary
FuzzDB is a comprehensive database of fuzzing payloads and patterns, ideal for manual testing and integration into custom tools. ClusterFuzz, on the other hand, is a full-featured fuzzing platform with automated capabilities, extensive reporting, and scalable infrastructure. While FuzzDB excels in providing a wide range of attack vectors, ClusterFuzz offers a more complete solution for continuous fuzzing and bug detection in large-scale projects.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
ClusterFuzz
ClusterFuzz is a scalable fuzzing infrastructure that finds security and stability issues in software.
Google uses ClusterFuzz to fuzz all Google products and as the fuzzing backend for OSS-Fuzz.
ClusterFuzz provides many features which help seamlessly integrate fuzzing into a software project's development process:
- Highly scalable. Can run on any size cluster (e.g. OSS-Fuzz instance runs on 100,000 VMs).
- Accurate deduplication of crashes.
- Fully automatic bug filing, triage and closing for various issue trackers (e.g. Monorail, Jira).
- Supports multiple coverage guided fuzzing engines (libFuzzer, AFL, AFL++ and Honggfuzz) for optimal results (with ensemble fuzzing and fuzzing strategies).
- Support for blackbox fuzzing.
- Testcase minimization.
- Regression finding through bisection.
- Statistics for analyzing fuzzer performance, and crash rates.
- Easy to use web interface for management and viewing crashes.
- Support for various authentication providers using Firebase.
Overview
Documentation
You can find detailed documentation here.
Trophies
As of February 2023, ClusterFuzz has found ~27,000 bugs in Google (e.g. Chrome). Additionally, ClusterFuzz has helped identify and fix over 8,900 vulnerabilities and 28,000 bugs across 850 projects integrated with OSS-Fuzz.
Getting Help
You can file an issue to ask questions, request features, or ask for help.
Staying Up to Date
We will use clusterfuzz-announce(#)googlegroups.com to make announcements about ClusterFuzz.
ClusterFuzzLite
For a more lightweight version of ClusterFuzz that runs on CI/CD systems, check out ClusterFuzzLite.
Top Related Projects
A self-hosted Fuzzing-As-A-Service platform
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
OSS-Fuzz - continuous fuzzing for open source software.
Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot