Security.com

fuzz testing (fuzzing)

By Ben Lutkevich

What is fuzz testing?

Fuzz testing (fuzzing) is a quality assurance technique used to discover coding errors or bugs and security loopholes in software, operating systems and networks. Fuzzing involves inputting massive amounts of random data, called fuzz, to the test subject in an attempt to make it crash.

If a security vulnerability is found, a software tool called a fuzzer is used to identify potential causes. Fuzz testing was originally developed by Barton Miller at the University of Wisconsin in 1989.

How does fuzz testing work?

Fuzzing is an application security testing technique that feeds invalid inputs to a software program to expose vulnerabilities. It is often a black box testing technique that is carried out without the knowledge of the subject program's internal structure.

Intentionally malformed, unexpected or completely random inputs are fed to the program to see how it responds. This approach reveals cybersecurity threats and vulnerabilities like memory leaks. Once identified, vulnerabilities can be patched so that threat actors can't use them to install malware, steal sensitive information or otherwise cause a data breach.

Fuzzing is typically carried out using automated software that generates new test cases and feeds the program inputs. It also detects if the program crashes, stalls or reveals other vulnerabilities. Some fuzz testing programs will mutate the input until it behaves unexpectedly, yielding a positive return from the test.

Programs that take structured input are usually the subject of fuzz testing. More nuanced fuzzers will feed the program semivalid input, which is valid enough for the program to accept during parsing but invalid enough that vulnerabilities are exposed.

Both paid and free open source software fuzzing tools are available.

Types of fuzz testing

Several different fuzz testing types are in use, including the following:

Fuzz testing applications

Fuzzers are best used for discovering vulnerabilities that threat actors could exploit for various types of attacks, such as buffer overflows, denial of service, cross-site scripting and SQL injection. These are schemes malicious hackers use to wreak the greatest amount of havoc in the least possible time. Attackers use malicious code as malformed data inputs to manipulate a system, much the same way fuzz testing does.

Fuzz tests are used to test different data types in programming languages, including metadata, characters and binary sequences. Some methods of fuzz testing include the following:

Advantages of fuzz testing

Fuzz testing has a high benefit-to-cost ratio and often reveals defects that are overlooked when software is written and debugged. The following are some of the specific advantages to fuzz testing:

Limitations of fuzz testing

Fuzz testing has some significant limitations, including the following:

Several criteria go into software testing tool selection. Learn the seven questions to ask when selecting software testing tools.

07 Mar 2023

All Rights Reserved, Copyright 2000 - 2024, TechTarget | Read our Privacy Statement