FairFuzz: A Targeted Mutation Strategy for Increasing Greybox Fuzz Testing Coverage

By Caroline Lemieux, Koushik Sen. International Conference on Automated Software Engineering, 2017

474 citations recorded by the source corpus.

In recent years, fuzz testing has proven itself to be one of the most effective techniques for finding correctness bugs and security vulnerabilities in practice. One particular fuzz testing tool, American Fuzzy Lop (AFL), has become popular thanks to its ease-of-use and bug-finding power. However, AFL remains limited in the bugs it can find since it simply does not cover large regions of code. If it does not cover parts of the code, it will not find bugs there. We propose a two-pronged approach to increase the coverage achieved by AFL. First, the approach automatically identifies branches exercised by few AFL-produced inputs (rare branches), which often guard code that is empirically hard to cover by naïvely mutating inputs. The second part of the approach is a novel mutation mask creation algorithm, which allows mutations to be biased towards producing inputs hitting a given rare branch. This mask is dynamically computed during fuzz testing and can be adapted to other testing targets. We implement this approach on top of AFL in a tool named FairFuzz. We conduct evaluation on real-world programs against state-of-the-art versions of AFL. We find that on these programs FairFuzz achieves high branch coverage at a faster rate that state-of-the-art versions of AFL. In addition, on programs with nested conditional structure, it achieves sustained increases in branch coverage after 24 hours (average 10.6% increase). In qualitative analysis, we find that FairFuzz has an increased capacity to automatically discover keywords.

Subfields: Software, Signal Processing

View Paper: https://www.semanticscholar.org/paper/fd093cb338822b1ba137bff903726f8b5a0ec5dc

How researchers see this paper

The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.

In Software

  1. Chun Xia
  2. Lingming Zhang
  3. Yinlin Deng
  4. Haoran Peng
  5. Chenyuan Yang
  6. Yangruibo Ding
  7. Baishakhi Ray
  8. Andrea Fioraldi

In Signal Processing

  1. Sang Kil Cha
  2. Andrea Fioraldi
  3. Sheng Wen
  4. Chun Xia
  5. Seyit Ahmet Camtepe
  6. Marc Heuse
  7. Yangruibo Ding
  8. Xiaogang Zhu

Citations in the corpus