2018 IEEE Symposium on Security and Privacy (SP) 2018
DOI: 10.1109/sp.2018.00056
|View full text |Cite
|
Sign up to set email alerts
|

T-Fuzz: Fuzzing by Program Transformation

Abstract: Fuzzing is a simple yet effective approach to discover software bugs utilizing randomly generated inputs. However, it is limited by coverage and cannot find bugs hidden in deep execution paths of the program because the randomly generated inputs fail complex sanity checks, e.g., checks on magic values, checksums, or hashes.To improve coverage, existing approaches rely on imprecise heuristics or complex input mutation techniques (e.g., symbolic execution or taint analysis) to bypass sanity checks. Our novel met… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

2
151
0
1

Year Published

2019
2019
2020
2020

Publication Types

Select...
3
3
2

Relationship

0
8

Authors

Journals

citations
Cited by 217 publications
(154 citation statements)
references
References 21 publications
2
151
0
1
Order By: Relevance
“…Our work builds on coverage-based greybox fuzzing (CGF) [31], [37], which is a popular and effective approach for software vulnerability detection. The AFL fuzzer [31] and its extensions [1], [2], [7], [11], [17], [18], [21], [27] constitute the most widely used embodiment of CGF. CGF is a promising middle ground between blackbox and whitebox fuzzing.…”
Section: Related Workmentioning
confidence: 99%
“…Our work builds on coverage-based greybox fuzzing (CGF) [31], [37], which is a popular and effective approach for software vulnerability detection. The AFL fuzzer [31] and its extensions [1], [2], [7], [11], [17], [18], [21], [27] constitute the most widely used embodiment of CGF. CGF is a promising middle ground between blackbox and whitebox fuzzing.…”
Section: Related Workmentioning
confidence: 99%
“…Prior work has seeded fuzzing by replaying sequences of kernel API calls [25], commands from Android apps to smart IoT Devices [18], and input provided by human assistants [55]. Recent techniques for improving code coverage during fuzz testing include introducing selective symbolic execution [58], control-and data-flow analysis on the program under test [50], reducing collisions in code coverage measurements [23], and altering the program under test [46]. Prior work applies existing fuzz testers to discover AC vulnerabilities in whole programs [37], [47], and in Java programs by combining fuzz testing with symbolic execution [43] or seeding black box fuzzing with information taken from program traces [40].…”
Section: Fuzz Testingmentioning
confidence: 99%
“…Indeed, these tools are evaluated by the slowdown they can achieve for a given program, as opposed to the amount of code they successfully cover. Achieving high code coverage on any program under test is a notoriously difficult task because common program patterns like comparing input to magic values or checksum tests are difficult to bypass using fuzzing alone, although program transformation tricks like splitting each comparison into a series of one byte comparisons [36] or simply removing them from the program [46] can improve coverage. Augmenting fuzzing with advanced techniques like taint analysis [50] or symbolic execution [44], [58] helps overcome these fuzzing roadblocks, and RedQueen [12] showed how advanced tracing hardware can emulate these more heavyweight techniques by providing a fuzzer with enough information to establish correspondence between program inputs and internal program state.…”
Section: Introductionmentioning
confidence: 99%
“…Steelix [26] and REDQUEEN [4] detect magic bytes checking and infer their input offsets to solve them without taint analysis. T-Fuzz ignores input checks in the original program and leverages symbolic execution to filter false positives and reproduce true bugs [28]. TaintScopre fixs checksum values in the generated inputs using symbolic execution [37].…”
Section: Related Work 71 Solving Complicated Constraintsmentioning
confidence: 99%
“…Taintscope [37] uses taint tracking to infer checksum-handling code and bypasses these checks using control flow alteration since these checks are hard to satisfy when mutating the input. T-Fuzz [28] detects complex checks without taint tracking. Both approaches use symbolic execution to generate valid input that would solve target constraints.…”
Section: Using Taint Tracking To Guide Fuzzingmentioning
confidence: 99%