Researchers discovered 53 new and critical vulnerabilities in Adobe Reader over the course of 50 days by using common Windows fuzzing framework WinAFL, new analysis shows.
The number of new vulnerabilities reported in 2017 was about 14,000, a high point compared with previous years and more than double the amount found in 2016, according to Check Point, which conducted the experiment. Check Point researchers attribute the spike to the growing popularity of "fuzzers," or automatic vulnerability-finding tools, which are maturing and growing more accepted as their capabilities are refined.
Fuzzers are not new – they've been around for more than twenty years – but they are becoming more accessible and capable. Fortinet's Derek Manky anticipates AI fuzzing will increase in 2019 as artificial intelligence makes it more efficient and effective. The trend could make zero-day exploits more common and affect the process of securing devices and systems.
Professional threat researchers commonly use fuzzing in lab environments to find new vulnerabilities in hardware and software. They inject invalid and sometimes semi-random data into an interface or program and watch for crashes, potential memory leaks, undocumented jumps to debug routines, failing code assertions, and other activity, Manky explains.
Security experts often avoid fuzzers because they are perceived to be a hassle. While adoption is increasing, Check Point's team wanted to see how many low-hanging fruit they were missing. Their 50-day experiment unearthed more than 50 new CVEs in Adobe Reader. An average of one vulnerability per day is "not quite the usual pace for this kind of research," they point out.
For their fuzzer, researchers chose WinAFL, a common Windows fuzzing framework, and targeted Adobe Reader in "the most vanilla experiment we could think of," they explain in a report on the findings. A 50-day timeframe was chosen for the full project: reverse-engineering code, hunting for potential vulnerable libraries, writing harnesses, and running the fuzzer itself.
WinAFL, a fork of AFL for Windows, is a coverage guided genetic fuzzer built and maintained by Ivan Fratric of Google's Project Zero. The Windows version uses a different style of instrumentation, which let researchers target closed source binaries, they report. They found WinAFL to be effective in finding file format bugs, especially in compressed binary formats.
Knowing WinAFL is better at binary formats, they chose to focus their efforts and attack a specific parser. The challenge was finding a parser and writing a harness for it. In fuzzing, a harness is used to target complex software like Adobe Reader, researchers explain, as finding a target function (the entry point to the fuzzing process) in nature is relatively uncommon.
Before the fuzzing session begins, researchers had to check that the total path count was rising – a sign the fuzzer is reaching new paths with their harness. If the path count is zero or close to it, there are a few problems they can investigate, which Check Point experts explain in their write-up of the investivation. The stability of the harness, which should be above 80%, is critical as it affects the fuzzer's accuracy and performance, they explain.
Running the fuzzers is pretty straightforward, they say, and should be done in the following order: run the fuzzers, check coverage and crashes, investigate coverage, employ the "cmin" process, and repeat. A bot should be used to check the status of all fuzzers, graph paths over time for each, crash triage and generate a report, and restart dead fuzzers.
"We can't stress enough how important it is to automate these tasks," they write. "Otherwise, fuzzing is tedious and error prone."
Their strategy led to the discovery of 53 critical bugs in Adobe Reader and Adobe Pro, and they repeated the process for different parsers to come up with their final list of CVEs.