Convert Figma logo to code with AI

google logohonggfuzz

Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)

3,060
515
3,060
26

Top Related Projects

Scalable fuzzing infrastructure.

10,307

OSS-Fuzz - continuous fuzzing for open source software.

8,198

Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.

Quick Overview

Honggfuzz is a security-oriented fuzzer with powerful analysis options. It's designed to be easy to use, fast, and effective at finding software bugs. Honggfuzz supports various operating systems and architectures, making it a versatile tool for developers and security researchers.

Pros

  • Supports multiple platforms (Linux, macOS, Windows) and CPU architectures
  • Offers various fuzzing techniques, including feedback-driven fuzzing
  • Provides built-in instrumentation for better code coverage
  • Integrates well with sanitizers like AddressSanitizer and UndefinedBehaviorSanitizer

Cons

  • Steeper learning curve compared to some simpler fuzzers
  • May require additional setup for certain features or platforms
  • Documentation could be more comprehensive for advanced use cases
  • Performance can vary depending on the target application and configuration

Getting Started

To get started with Honggfuzz, follow these steps:

  1. Clone the repository:

    git clone https://github.com/google/honggfuzz.git
    
  2. Build Honggfuzz:

    cd honggfuzz
    make
    
  3. Run Honggfuzz on a sample target:

    ./honggfuzz -f input_corpus/ -w output_corpus/ -- ./target_binary ___FILE___
    

Replace input_corpus/ with your initial input files, output_corpus/ with the directory for new test cases, and ./target_binary with the path to your target application. The ___FILE___ placeholder will be replaced by Honggfuzz with the input file path.

For more detailed instructions and advanced usage, refer to the project's documentation on GitHub.

Competitor Comparisons

Scalable fuzzing infrastructure.

Pros of ClusterFuzz

  • Designed for large-scale fuzzing with distributed architecture
  • Supports multiple programming languages and fuzzing engines
  • Provides a web interface for managing and monitoring fuzzing campaigns

Cons of ClusterFuzz

  • More complex setup and infrastructure requirements
  • Steeper learning curve for configuration and deployment
  • May be overkill for smaller projects or individual developers

Code Comparison

Honggfuzz example (main fuzzing loop):

for (;;) {
    if (fuzz_one(hfuzz, fuzzer) == false) {
        break;
    }
}

ClusterFuzz example (job script):

def fuzz(input_corpus, output_corpus, target_binary):
    # Fuzzing logic here
    pass

if __name__ == '__main__':
    fuzz(sys.argv[1], sys.argv[2], sys.argv[3])

Summary

Honggfuzz is a simpler, lightweight fuzzing tool that's easy to set up and use for individual developers or smaller projects. It focuses primarily on coverage-guided fuzzing for C/C++ programs.

ClusterFuzz, on the other hand, is a more comprehensive fuzzing platform designed for large-scale, distributed fuzzing across multiple projects and languages. It offers advanced features like continuous integration, bug tracking, and detailed analytics, but requires more setup and infrastructure.

Choose Honggfuzz for quick, straightforward fuzzing of C/C++ projects, and ClusterFuzz for enterprise-level, multi-language fuzzing campaigns with extensive management and reporting capabilities.

10,307

OSS-Fuzz - continuous fuzzing for open source software.

Pros of OSS-Fuzz

  • Supports multiple fuzzing engines (libFuzzer, AFL++, Honggfuzz)
  • Integrates with ClusterFuzz for scalable fuzzing infrastructure
  • Provides continuous fuzzing for open-source projects

Cons of OSS-Fuzz

  • More complex setup and configuration compared to Honggfuzz
  • Limited to open-source projects (not suitable for proprietary software)
  • Requires more resources due to its comprehensive approach

Code Comparison

OSS-Fuzz (build.sh example):

#!/bin/bash -eu
$CXX $CXXFLAGS -std=c++11 -I. \
    /path/to/fuzz_target.cc -o $OUT/fuzz_target \
    $LIB_FUZZING_ENGINE

Honggfuzz (simple usage):

honggfuzz -f input_dir/ -w output_dir/ -- /path/to/tested/binary @@

OSS-Fuzz focuses on integrating multiple fuzzing engines and providing a comprehensive fuzzing infrastructure, while Honggfuzz offers a more straightforward approach with its own fuzzing engine. OSS-Fuzz is better suited for large-scale, open-source projects, whereas Honggfuzz can be quickly deployed for both open-source and proprietary software fuzzing needs.

8,198

Dictionary of attack patterns and primitives for black-box application fault injection and resource discovery.

Pros of FuzzDB

  • Extensive collection of attack patterns and payloads for various types of security testing
  • Language-agnostic and can be used with any fuzzing tool or framework
  • Regularly updated with new attack vectors and patterns

Cons of FuzzDB

  • Not a standalone fuzzing tool, requires integration with other tools
  • Less automated and intelligent than Honggfuzz's instrumentation-guided fuzzing
  • May require more manual effort to use effectively in complex testing scenarios

Code Comparison

FuzzDB (example payload):

<script>alert(1)</script>

Honggfuzz (example usage):

int main(int argc, char **argv) {
    honggfuzz_init(&hfuzz);
    honggfuzz_run();
    return 0;
}

Summary

FuzzDB is a comprehensive database of attack patterns and payloads, while Honggfuzz is a powerful, instrumentation-guided fuzzing tool. FuzzDB offers flexibility and a wide range of pre-built test cases, making it useful for various security testing scenarios. However, it requires integration with other tools and potentially more manual effort. Honggfuzz, on the other hand, provides advanced fuzzing capabilities with built-in instrumentation and automation, but may have a steeper learning curve for beginners.

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

Honggfuzz

Description

A security oriented, feedback-driven, evolutionary, easy-to-use fuzzer with interesting analysis options. See the Usage document for a primer on Honggfuzz use.

Code

Installation

sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang
make

Features

  • It's multi-process and multi-threaded: there's no need to run multiple copies of your fuzzer, as honggfuzz can unlock potential of all your available CPU cores with a single running instance. The file corpus is automatically shared and improved between all fuzzed processes.
  • It's blazingly fast when the persistent fuzzing mode is used. A simple/empty LLVMFuzzerTestOneInput function can be tested with up to 1mo iterations per second on a relatively modern CPU (e.g. i7-6700K).
  • Has a solid track record of uncovered security bugs: the only (to the date) vulnerability in OpenSSL with the critical score mark was discovered by honggfuzz. See the Trophies paragraph for the summary of findings to the date.
  • Uses low-level interfaces to monitor processes (e.g. ptrace under Linux and NetBSD). As opposed to other fuzzers, it will discover and report hijacked/ignored signals from crashes (intercepted and potentially hidden by a fuzzed program).
  • Easy-to-use, feed it a simple corpus directory (can even be empty for the feedback-driven fuzzing), and it will work its way up, expanding it by utilizing feedback-based coverage metrics.
  • Supports several (more than any other coverage-based feedback-driven fuzzer) hardware-based (CPU: branch/instruction counting, Intel BTS, Intel PT) and software-based feedback-driven fuzzing modes. Also, see the new qemu mode for blackbox binary fuzzing.
  • Works (at least) under GNU/Linux, FreeBSD, NetBSD, Mac OS X, Windows/CygWin and Android.
  • Supports the persistent fuzzing mode (long-lived process calling a fuzzed API repeatedly). More on that can be found here.
  • It comes with the examples directory, consisting of real world fuzz setups for widely-used software (e.g. Apache HTTPS, OpenSSL, libjpeg etc.).
  • Provides a corpus minimization mode.


Requirements

  • Linux - The BFD library (libbfd-dev) and libunwind (libunwind-dev/libunwind8-dev), clang-5.0 or higher for software-based coverage modes
  • FreeBSD - gmake, clang-5.0 or newer
  • NetBSD - gmake, clang, capstone, libBlocksRuntime
  • Android - Android SDK/NDK. Also see this detailed doc on how to build and run it
  • Windows - CygWin
  • Darwin/OS X - Xcode 10.8+
  • if Clang/LLVM is used to compile honggfuzz - link it with the BlocksRuntime Library (libblocksruntime-dev)

Trophies

Honggfuzz has been used to find a few interesting security problems in major software packages; An incomplete list:

Projects utilizing or inspired-by Honggfuzz

Contact

This is NOT an official Google product