Convert Figma logo to code with AI

google logoclusterfuzz

Scalable fuzzing infrastructure.

5,268
551
5,268
335

Top Related Projects

2,819

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!

10,307

OSS-Fuzz - continuous fuzzing for open source software.

8,141

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:

  1. Clone the repository:

    git clone https://github.com/google/clusterfuzz.git
    
  2. Install dependencies:

    python3 -m pip install -r requirements.txt
    
  3. Set up a local instance:

    python3 local/local_instance.py setup
    
  4. Run the local instance:

    python3 local/local_instance.py run
    
  5. 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

2,819

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.

10,307

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.

8,141

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

ClusterFuzz

OpenSSF Scorecard

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:

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.