This project is a comprehensive software fuzzing knowledge base and technical guide designed for discovering software bugs and vulnerabilities. It serves as a resource for implementing coverage-guided, structure-aware, and hybrid fuzzing across various targets, including compiled binaries and hardware kernels. The resource provides specialized guidance on using grammars and defined data formats to generate syntactically valid inputs for complex APIs. It also details methods for combining grey-box fuzzing with symbolic execution to reach deep execution paths and utilizes binary instrumentation
AFL is a coverage-guided fuzzer and security vulnerability scanner used to identify software bugs and memory corruption by feeding programs mutated data. It functions as a binary instrumentation tool and a test case minimizer to locate crashes and isolate the smallest set of bytes causing a fault. The project distinguishes itself through its ability to operate as a parallel fuzzing orchestrator, distributing workloads across multiple CPU cores or networked machines. It utilizes dictionary-based mutation for complex file formats and performs input sensitivity analysis to identify critical sect
Syzkaller is an unsupervised, coverage-guided kernel fuzzer that automatically generates and mutates system call sequences to find bugs in operating system kernels. It operates without human intervention, using a closed feedback loop of input generation, execution, crash detection, and corpus refinement to continuously explore kernel code paths. The fuzzer distinguishes itself by supporting multiple operating system kernels, including Linux, FreeBSD, and Windows, through per-platform syscall harnesses that abstract system call interfaces behind a common driver. It uses declarative description
AFL++ is a coverage-guided fuzzing framework that discovers crashes and hangs in software by mutating inputs while tracking which code paths are exercised. It functions as both a fuzzing engine and a campaign manager, supporting targets with or without source code through compile-time instrumentation, dynamic binary instrumentation, and emulation. The framework includes tools for crash triage and analysis, test case minimization, and campaign deployment across local or distributed environments. The framework distinguishes itself through its breadth of instrumentation backends, allowing users
go-fuzz is a coverage-guided randomized testing tool for identifying crashes and logic bugs in Go code. It consists of a fuzzer that evolves random inputs based on code execution paths, an instrumentation tool that produces binaries for tracking coverage, and a seed corpus manager.
The main features of dvyukov/go-fuzz are: Coverage-Guided Fuzzing, Go Binary Instrumentation, Binary Instrumentation, Coverage-Tracking Insertions, Fuzzing Mutation Loops, Coverage-Guided Mutation, Fuzzing Instrumentation, Go Fuzzing Tools.
Open-source alternatives to dvyukov/go-fuzz include: google/fuzzing — This project is a comprehensive software fuzzing knowledge base and technical guide designed for discovering software… google/afl — AFL is a coverage-guided fuzzer and security vulnerability scanner used to identify software bugs and memory… google/syzkaller — Syzkaller is an unsupervised, coverage-guided kernel fuzzer that automatically generates and mutates system call… aflplusplus/aflplusplus — AFL++ is a coverage-guided fuzzing framework that discovers crashes and hangs in software by mutating inputs while… google/clusterfuzz — ClusterFuzz is an automated platform that runs coverage-guided fuzzers at scale to find security and stability bugs in… appleboy/gofight.