Everything about Fuzzing
Automated software testing technique
In programming and software development, fuzzing or fuzz testing is an automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a computer program. The program is then monitored for exceptions such as crashes, failing built-in code assertions, or potential memory leaks. Typically, fuzzers are used to test programs that take structured inputs. This structure is specified, such as in a file format or protocol and distinguishes valid from invalid input. An effective fuzzer generates semi-valid inputs that are "valid enough" in that they are not directly rejected by the parser, but do create unexpected behaviors deeper in the program and are "invalid enough" to expose corner cases that have not been properly dealt with. Wikipedia →
đź§ Start here: a 6-step reading path
- Read the overview: FuzzingA 5-minute orientation
- Skim a recent paper: Rethinking Smart Contract Fuzzing: Fuzzing With Invocation Ordering and Important Branch RevisitingInfluential work since 2022
- Pick up a classic book: 模糊数ĺ¦ĺ…Ąé—¨The most-reprinted book on the subject
- Read the landmark paper: The Art, Science, and Engineering of Fuzzing: A SurveyCited 459 times
- Go sideways: American Fuzzy Lop (software)A closely related topic
- Go sideways: Concolic testingA closely related topic
đź“– Definitions
Verb present participle and gerund of fuzz
Noun Fuzz testing.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
The Art, Science, and Engineering of Fuzzing: A Survey
Fuzzing: A Survey for Roadmap
Coverage-Based Greybox Fuzzing as Markov Chain
Fuzzing: a survey
SAGE: Whitebox Fuzzing for Security Testing
Fuzzing: State of the Art
Violating Assumptions with Fuzzing
Fuzzing: Challenges and Reflections
🆕 Influential since 2022
Rethinking Smart Contract Fuzzing: Fuzzing With Invocation Ordering and Important Branch Revisiting
StateAFL: Greybox fuzzing for stateful network servers
Neural Network Guided Evolutionary Fuzzing for Finding Traffic Violations of Autonomous Vehicles
WhiteFox: White-Box Compiler Fuzzing Empowered by Large Language Models
xFuzz: Machine Learning Guided Cross-Contract Fuzzing
📚 Books worth reading
- 📕模糊数ĺ¦ĺ…Ąé—¨éť’äą‰ĺ¦ Â· 1987
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
đź”— Related topics
- American Fuzzy Lop (software) Free and open-source software portal American Fuzzy Lop (AFL), stylized in all lowercase as american fuzzy lop, is a free software fuzzer that employs…
- Concolic testing Concolic testing (a portmanteau of concrete and symbolic, also known as dynamic symbolic execution) is a hybrid software verification technique that performs…
- Dynamic program analysis Dynamic program analysis is the act of analyzing software that involves executing a program – as opposed to static program analysis, which does not execute…
- Differential testing Differential testing, also known as differential fuzzing, is a software testing technique that detect bugs, by providing the same input to a series of…
- Out-of-bounds read In computer security and programming, an out-of-bounds read is a software anomaly where a program, while reading data from a buffer, reads outside of the…
- Vulnerability management Vulnerability management is the "cyclical practice of identifying, classifying, prioritizing, remediating, and mitigating" software vulnerabilities, which…
- Memory safety Memory safety is the state of being protected from various software bugs and security vulnerabilities when dealing with memory access, such as buffer overflows…
- Automatic bug fixing Automatic bug-fixing is the automatic repair of software bugs without the intervention of a human programmer. It is also commonly referred to as automatic…