Published Aug 24, 2021

Episode 474: Paul Butcher on Fuzz Testing

Paul Butcher delves into the unique application of fuzz testing in the Ada programming language, exploring its advanced mutation strategies and tools like AFL, to enhance software security and robustness in high-stakes industries.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Fuzz Testing

    Fuzz testing is a unique approach that focuses on the behavior of software when exposed to unexpected inputs, rather than just verifying expected outputs. explains that this method is particularly useful for identifying vulnerabilities in software systems, especially in fields like defense and aerospace, where guidelines such as Do 178 C are prevalent 1. He emphasizes that fuzz testing is more about vulnerability identification than meeting specific safety requirements 2.

    Fuzz testing is more for vulnerability identification. And once you've identified a vulnerability in your system, depending on where you are in your software development lifecycle, you may be able to correct that vulnerability.

    ---

    This technique is often employed later in the software development lifecycle, although earlier implementation can yield greater benefits 2.

       

    Testing Comparison

    Fuzz testing stands apart from traditional testing methods like verification testing by focusing on unexpected inputs and system behavior. contrasts it with positive testing, which verifies that a system meets its requirements, and negative testing, which ensures unauthorized actions are blocked 3. He also highlights mutation-based testing, which refines the brute-force approach by generating more meaningful test cases 4.

    Mutation algorithms differ from a much simpler form of fuzz testing that is commonly known as brute force or black box testing.

    ---

    This allows deeper exploration into the software's control flow, enhancing the effectiveness of fuzz testing 4.

       

    Security Impact

    Fuzz testing plays a crucial role in identifying security vulnerabilities within software projects. shares an anecdote about discovering a bug in a secondary library through fuzz testing, illustrating its unexpected yet valuable insights 5. This method not only detects crashes but also identifies anomalies like buffer overflows, which may not immediately crash the system but pose significant risks 6.

    You could have a buffer overflow that writes into the next area of stack, but the program is now operating in an unknown and potentially dangerous state.

    ---

    The process can be resource-intensive, often requiring parallel execution on high-end servers to manage complex systems effectively 6.

Related Episodes