Repository logo

Infoscience

  • English
  • French
Log In
Logo EPFL, École polytechnique fédérale de Lausanne

Infoscience

  • English
  • French
Log In
  1. Home
  2. Academic and Research Output
  3. Conferences, Workshops, Symposiums, and Seminars
  4. T-Fuzz: Fuzzing by Program Transformation
 
Loading...
Thumbnail Image
conference paper

T-Fuzz: Fuzzing by Program Transformation

Peng, Hui
•
Shoshitaishvili, Yan
•
Payer, Mathias  
July 23, 2018
Proceedings - IEEE Symposium on Security and Privacy
39 IEEE Symposium on Security and Privacy

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 method tackles coverage from a different angle: by removing sanity checks in the target program. T-Fuzz leverages a coverage-guided fuzzer to generate inputs. Whenever the fuzzer can no longer trigger new code paths, a light-weight, dynamic tracing based technique detects the input checks that the fuzzer-generated inputs fail. These checks are then removed from the target program. Fuzzing then continues on the transformed program, allowing the code protected by the removed checks to be triggered and potential bugs discovered. Fuzzing transformed programs to find bugs poses two challenges: (1) removal of checks leads to over-approximation and false positives, and (2) even for true bugs, the crashing input on the transformed program may not trigger the bug in the original program. As an auxiliary post-processing step, T-Fuzz leverages a symbolic execution-based approach to filter out false positives and reproduce true bugs in the original program. By transforming the program as well as mutating the input, T-Fuzz covers more code and finds more true bugs than any existing technique. We have evaluated T-Fuzz on the DARPA Cyber Grand Challenge dataset, LAVA-M dataset and 4 real-world programs (pngfix, tiffinfo, magick and pdftohtml). For the CGC dataset, T-Fuzz finds bugs in 166 binaries, Driller in 121, and AFL in 105. In addition, found 3 new bugs in previously-fuzzed programs and libraries.

  • Details
  • Metrics
Type
conference paper
DOI
10.1109/SP.2018.00056
Scopus ID

2-s2.0-85051011382

Author(s)
Peng, Hui
•
Shoshitaishvili, Yan
•
Payer, Mathias  
Date Issued

2018-07-23

Publisher

Institute of Electrical and Electronics Engineers Inc.

Journal
Proceedings - IEEE Symposium on Security and Privacy
ISBN of the book

9781538643525

Book part number

2018-May

Article Number

8418632

Start page

697

End page

710

Subjects

Bug finding

•

Fuzz

•

Program Analysis

Peer reviewed

REVIEWED

Written at

OTHER

EPFL units
HEXHIVE  
Event nameEvent acronymEvent placeEvent date
39 IEEE Symposium on Security and Privacy

San Francisco, United States

2018-05-21 - 2018-05-23

FunderFunding(s)Grant NumberGrant URL

National Science Foundation

CNS-1513783

ONR

N00014-17-1-2513,N00014-17-1-2897

Intel Corporation

Available on Infoscience
April 4, 2025
Use this identifier to reference this record
https://infoscience.epfl.ch/handle/20.500.14299/248649
Logo EPFL, École polytechnique fédérale de Lausanne
  • Contact
  • infoscience@epfl.ch

  • Follow us on Facebook
  • Follow us on Instagram
  • Follow us on LinkedIn
  • Follow us on X
  • Follow us on Youtube
AccessibilityLegal noticePrivacy policyCookie settingsEnd User AgreementGet helpFeedback

Infoscience is a service managed and provided by the Library and IT Services of EPFL. © EPFL, tous droits réservés