PATA: Fuzzing with Path Aware Taint Analysis
Authors:
- 1 May 2022
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- p. 1-17
Abstract
Taint analysis assists fuzzers in solving complex fuzzing constraints by inferring the influencing input bytes. Execution paths in real-world programs often reach loops, where constraints in these loops can be visited and recorded multiple times. Conventional taint analysis techniques experience difficulties when distinguishing between multiple occurrences of the same constraint. In this paper, we propose PATA, a fuzzer that implements path-aware taint analysis, i.e. one that distinguishes between multiple occurrences of the same variable based on the execution path information. PATA does so using the following steps. First, PATA identifies variables used in constraints and constructs the Representative Variable Sequence (RVS), consisting of occurrences of all representative constraint variables and their values. Next, PATA perturbs the input, matches its RVS with that of the original input, and looks for value changes to identify the influencing input bytes for each entry in the RVS. Finally, PATA mutates the corresponding input bytes to solve constraints in the given path. To demonstrate the effectiveness of PATA over conventional taint analysis methods, we evaluated its performance on the benchmarks Google’s fuzzer-test-suite and LAVA-M against AFL, MOPT, TortoriseFuzz, VUzzer, Angora, Redqueen, and Greyone. On Google’s fuzzer-test-suite, PATA outperformed these state-of-the-art fuzzers by 29%–1830% and 7%–87% in the number of unique paths found and basic blocks covered, respectively. More importantly, it found more bugs than the comparison fuzzers, including 17 unlisted ones. On LAVA-M, PATA performed the best out of all evaluated fuzzers and found 2602 bugs. On open-source projects, PATA found 40 previously unknown bugs, with 12 of them confirmed as CVEs.Keywords
Funding Information
- Research and Development
- Research and Development
This publication has 13 references indexed in Scilit:
- Angora: Efficient Fuzzing by Principled Search2018
- VUzzer: Application-aware Evolutionary Fuzzing2017
- Coverage-based Greybox Fuzzing as Markov Chain2016
- Driller: Augmenting Fuzzing Through Selective Symbolic Execution2016
- Unleashing Mayhem on Binary Code2012
- S2EACM SIGPLAN Notices, 2011
- TaintScope: A Checksum-Aware Directed Fuzzing Tool for Automatic Software Vulnerability Detection2010
- Taint-based directed whitebox fuzzing2009
- An empirical study of the reliability of UNIX utilitiesCommunications of the ACM, 1990
- Symbolic execution and program testingCommunications of the ACM, 1976