Overview
The Fuzzing package provides AFL++ orchestration for discovering vulnerabilities through intelligent mutation-based fuzzing. It manages fuzzing campaigns, collects crashes, and integrates with crash analysis.Purpose
Automate fuzzing campaigns with:- AFL++ integration: Industry-standard coverage-guided fuzzing
- Parallel workers: Multiple fuzzer instances for speed
- Corpus management: Smart seed generation and management
- Crash collection: Automatic deduplication and triage
- Binary instrumentation detection: ASAN and AFL instrumentation checks
Architecture
Quick Start
Basic Fuzzing
Parallel Fuzzing
Crash Collection
Core Classes
AFLRunner
Orchestrates AFL++ fuzzing campaigns.Path
required
Path to target binary
Optional[Path]
Seed corpus directory (auto-generated if None)
Optional[Path]
Output directory for fuzzing results
Optional[Path]
AFL dictionary file for smarter mutations
str
default:"stdin"
Input mode: “stdin”, “file”, or “network”
CrashCollector
Collects and deduplicates crashes.Crash
Represents a single crash.str
Unique crash identifier
str
Signal that caused crash (SIGSEGV, SIGABRT, etc.)
str
Hash of stack trace for deduplication
Path
Path to crashing input
str
Exploitability estimate (exploitable, likely, unlikely, unknown)
CorpusManager
Manages fuzzing corpus.Fuzzing Workflow
Complete Campaign
Binary Preparation
AFL Instrumentation
Check Instrumentation
Corpus Generation
Automatic Seeds
Import Existing Corpus
Minimize Corpus
Configuration
AFL++ Options
Memory Limits
System Configuration (macOS)
Output Structure
Performance
Execution Speed
- Instrumented binary: 100K-500K execs/sec
- QEMU mode (no instrumentation): 10K-50K execs/sec
- ASAN enabled: 50K-200K execs/sec (slower but finds more bugs)
Parallel Speedup
Integration
With Binary Analysis
With LLM Analysis
Related Packages
- Binary Analysis - Crash analysis and debugging
- Autonomous - Intelligent fuzzing strategies
- LLM Analysis - AI-powered crash analysis
Best Practices
- Use AFL instrumentation for maximum speed
- Enable ASAN to catch more bugs
- Start with good seeds (real-world inputs)
- Run parallel workers (num_cpus - 1)
- Monitor fuzzer_stats for stalls
- Minimize corpus regularly for efficiency