Fuzzing

  1. Core Concepts and Architecture
    1. The Fuzzing Loop
      1. Input Generation
        1. Execution of Target
          1. Monitoring and Feedback
            1. Crash Detection and Logging
              1. Corpus Update
              2. Key Components of a Fuzzer
                1. Test Case Generator
                  1. Input Mutation
                    1. Input Generation from Grammar
                    2. Target Runner
                      1. Isolated Execution
                        1. Resource Management
                        2. Monitoring and Instrumentation Agent
                          1. Code Coverage Collection
                            1. Performance Monitoring
                            2. Crash Triage and Analysis Module
                              1. Crash Collection
                                1. Crash Deduplication
                                  1. Automated Triage
                                2. The Fuzz Target
                                  1. Defining the Entry Point
                                    1. Main Function
                                      1. API Entry Points
                                      2. Harnessing Libraries and Applications
                                        1. Writing a Fuzz Harness
                                          1. Isolating Testable Components
                                          2. Target Preparation
                                            1. Compilation Requirements
                                              1. Runtime Environment Setup
                                            2. The Corpus
                                              1. Initial Seed Corpus
                                                1. Selecting Representative Inputs
                                                  1. Minimizing Redundancy
                                                  2. Evolving Corpus
                                                    1. Adding New Inputs
                                                      1. Removing Redundant Inputs
                                                      2. Corpus Minimization
                                                        1. Techniques for Minimization
                                                          1. Benefits of a Small Corpus
                                                          2. Corpus Distillation
                                                            1. Removing Duplicates
                                                              1. Focusing on Coverage-Enhancing Inputs