This article is more than 1 year old

Hot fuzz: Bug detectives whip up smarter version of classic AFL fuzzer to hunt code vulnerabilities

Flaw-spotting toolkit already has 42 zero-days to its name

A group of university researchers from around the globe have teamed up to develop what they say is a powerful new tool to root out security flaws.

Known as AFLSmart, this fuzzing software is built on the powerful American Fuzzy Lop toolkit. We're told AFLSmart is pretty good at testing applications for common security flaws, such as buffer overflow errors, that can be targeted by attackers for denial of service or remote code execution exploits.

The researchers say that, on average, AFLSmart can detect twice as many bugs as AFL over a 24 hour period and, since it was put into use fuzzing a handful of open-source software libraries, the software has uncovered a total of 42 zero-day vulnerabilities and has banked 17 CVE-listed holes.

Fuzzing has long been used by security researchers as a way to automate the process of finding security vulnerabilities. By continually bombarding various input fields with strings of data, the tools can see where an application fails to properly handle the incoming data and could be vulnerable to exploitation.

AFLSmart, designed by teams from the National University of Singapore, Monash University in Australia, and University Politechnica of Bucharest, looks to expand the reach of common fuzzing tools by making them more versatile and able to cover a wider range of possible inputs.

The problem, says the team, is that most fuzzing tools move around an application slowly, changing individual bits and slowly hoping to come across a new input field. This makes automated fuzzing a slow and tedious process, particularly for multimedia libraries and tools that handle many types of data and formats.


"Finding vulnerabilities effectively in applications processing such widely used formats is of imminent need. Mutations of the bit-level file representation are unlikely to affect any structural changes on the file that are necessary to effectively explore the vast yet sparse domain of valid program inputs," the boffins write.

"More likely than not arbitrary bit-level mutations of a valid file will result in an invalid file that is rejected by the program’s parser before reaching the data processing portion of the program."

To solve this, the team set out to create a tool that is better able to look at the entire application and make high-level changes to the code it uses to fuzz an application for possible vulnerabilities.


Language bugs infest downstream software, fuzzer finds


Where a traditional fuzzing tool moves around an application by changing one or two bits to look for a new input field, AFLSmart tries to look at the entire input format. For example, the codeg would see that an application handles both image and document files, and create seed files for both of those formats.

"Given an input format specification, our smart greybox fuzzer derives a structural representation of the seed file, called virtual structure, and leverages our novel smart mutation operators to modify the virtual file structure in addition to the file’s bit sequence during the generation of new input files," the researchers said.

"During the greybox fuzzing search, our tool AFLSmart measures the degree of validity of the inputs produced with respect to the file format specification. It prioritizes valid inputs over invalid ones, by enabling the fuzzer to explore more mutations of a valid file as opposed to an invalid one."

This technique has been found to nearly double the efficiency of the fuzzing tool.

The paper describing the development and effectiveness of AFLSmart, "Smart Greybox Fuzzing" [PDF], was written by Van-Thuan Pham, Marcel Bohme, Andrew E. Santosa, Alexandru Razvan Caciulescu, and Abhik Roychoudhury. ®

More about


Send us news

Other stories you might like