Fuzzing is a software testing technique, often automatic or semi-automatic, which consists in transferring incorrect, unexpected or random data to an application. The objects of interest are crashes and freezes, violations of internal logic and checks in the application code , memory leaks caused by such input data. Fuzzing is a form of random testing ( English random testing ), often used to check security problems in software and computer systems.
When checking security, the most interesting are checks at the border of trust [1] . For example, it is much more important to conduct a fuzzing test of the file upload form by an unauthorized user than uploading a configuration file by an authorized privileged user.
History
Random data was used when testing applications before. For example, the Monkey application for Mac OS , created by Steve Caps back in 1983, generated random events that were sent to the input of tested programs for searching for bugs. It was used, in particular, when testing [2] .
The term “ fuzz ” appeared in 1988 at a seminar by Barton Miller at the University of Wisconsin [3] , during which a simple fuzzer program was created for the command line to test the reliability of applications on Unix. It generated random data that was passed as parameters to other programs until they stopped with an error. This was not only the first ever testing using random unstructured data, but also the first specialized application for testing a wide range of programs for various operating systems , and with a systematic analysis of the types of errors that occur during such testing. The creators of the project opened the source codes of their application, as well as public access to testing procedures and raw results. The test was repeated in 1995 - the application was finalized for testing applications with GUI , network protocols and system libraries for Mac OS and Windows.
It is worth noting that similar testing techniques existed long before the term appeared and the procedure was formalized. So, it is known that Jerry Weinberg used a set of cards with random numbers to transmit them to the input of programs back in the 1950s. [four]
In 1991, the crashme application was released, created to test the reliability of programs for Unix and Unix-like operating systems by executing a random set of processor instructions [5] .
Fuzzing testing is currently an integral part of most security and reliability checks of software and computer systems.
See also
- Buffer overflow
- Error code
- Reverse engineering
- Dynamic memory leak
- Dynamic code analysis
- Static code analysis
- Blue Screen of Death (BSoD)
- Control flow flow
Notes
- ↑ John Neystadt. Automated Penetration Testing with White-Box Fuzzing Neopr . Microsoft (February 2008). Date of appeal May 14, 2009.
- ↑ Macintosh Stories: Monkey Lives . Folklore.org (February 22, 1999). Date of treatment May 28, 2010.
- ↑ Fuzzing: Brute Force Vulnerability Discovery . - Addison-Wesley, 2007 .-- ISBN 0-321-44611-9 .
- ↑ Gerald M. Weinberg. Fuzz Testing and Fuzz History . Date of treatment February 6, 2017.
- ↑ crashme unopened . CodePlex Date of treatment June 26, 2012.
Links
- University of Wisconsin Fuzz Testing (the original fuzz project) Source of papers and fuzz software.
- Look out! It's the Fuzz! (IATAC IAnewsletter 10-1)
- Designing Inputs That Make Software Fail , conference video including fuzzy testing
- Link to the Oulu (Finland) University Secure Programming Group
- Building 'Protocol Aware' Fuzzing Frameworks
- Video training series about Fuzzing, Fuzz testing, and unknown vulnerability management