ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries

In recent years, coverage-guided technology has become the mainstream method of fuzzing. A coverage-guided fuzzer can guide a program to a new path (edge) so that previously untested code can be tested. As coverage-guided fuzzers have become more popular, the difficulty of discovering vulnerabilitie...

Full description

Bibliographic Details
Main Authors: Xinglu He, Pengfei Wang, Kai Lu, Xu Zhou
Format: Article
Language:English
Published: MDPI AG 2022-09-01
Series:Applied Sciences
Subjects:
Online Access:https://www.mdpi.com/2076-3417/12/19/9782
_version_ 1797480714458890240
author Xinglu He
Pengfei Wang
Kai Lu
Xu Zhou
author_facet Xinglu He
Pengfei Wang
Kai Lu
Xu Zhou
author_sort Xinglu He
collection DOAJ
description In recent years, coverage-guided technology has become the mainstream method of fuzzing. A coverage-guided fuzzer can guide a program to a new path (edge) so that previously untested code can be tested. As coverage-guided fuzzers have become more popular, the difficulty of discovering vulnerabilities has increased significantly. This paper proposes ObFuzzer, an object-oriented binary hybrid fuzzer based on a new assumption. Namely, the object which has been operated more times and operated in more positions is more likely to have defects. Our ObFuzzer consists of the following steps. First, ObFuzzer obtains the inner relations of object operations in the target program through static analysis and analyzes the riskiness of the basic blocks containing such operations. Then, ObFuzzer generates test cases that can guide the program to the basic blocks that this paper considers to be the most dangerous by symbolic execution. Finally, fuzzing is performed using the riskiness of the object operations rather than code coverage. To demonstrate the effectiveness of ObFuzzer over a traditional coverage-guided fuzzer, this paper evaluates its performance in a real program. When facing object-oriented programs, ObFuzzer has a 29% to 40% increase in object operation complexity during execution. These more complex object operations can enhance the ability to discover vulnerabilities related to object operations. Eventually, ObFuzzer found five unique vulnerabilities and one logic error without a crash in “xpdf”.
first_indexed 2024-03-09T22:04:03Z
format Article
id doaj.art-ed2f2a816d374979b1b4b1d117a7a278
institution Directory Open Access Journal
issn 2076-3417
language English
last_indexed 2024-03-09T22:04:03Z
publishDate 2022-09-01
publisher MDPI AG
record_format Article
series Applied Sciences
spelling doaj.art-ed2f2a816d374979b1b4b1d117a7a2782023-11-23T19:45:35ZengMDPI AGApplied Sciences2076-34172022-09-011219978210.3390/app12199782ObFuzzer: Object-Oriented Hybrid Fuzzer for BinariesXinglu He0Pengfei Wang1Kai Lu2Xu Zhou3College of Computer, National University of Defense Technology, Changsha 410073, ChinaCollege of Computer, National University of Defense Technology, Changsha 410073, ChinaCollege of Computer, National University of Defense Technology, Changsha 410073, ChinaCollege of Computer, National University of Defense Technology, Changsha 410073, ChinaIn recent years, coverage-guided technology has become the mainstream method of fuzzing. A coverage-guided fuzzer can guide a program to a new path (edge) so that previously untested code can be tested. As coverage-guided fuzzers have become more popular, the difficulty of discovering vulnerabilities has increased significantly. This paper proposes ObFuzzer, an object-oriented binary hybrid fuzzer based on a new assumption. Namely, the object which has been operated more times and operated in more positions is more likely to have defects. Our ObFuzzer consists of the following steps. First, ObFuzzer obtains the inner relations of object operations in the target program through static analysis and analyzes the riskiness of the basic blocks containing such operations. Then, ObFuzzer generates test cases that can guide the program to the basic blocks that this paper considers to be the most dangerous by symbolic execution. Finally, fuzzing is performed using the riskiness of the object operations rather than code coverage. To demonstrate the effectiveness of ObFuzzer over a traditional coverage-guided fuzzer, this paper evaluates its performance in a real program. When facing object-oriented programs, ObFuzzer has a 29% to 40% increase in object operation complexity during execution. These more complex object operations can enhance the ability to discover vulnerabilities related to object operations. Eventually, ObFuzzer found five unique vulnerabilities and one logic error without a crash in “xpdf”.https://www.mdpi.com/2076-3417/12/19/9782vulnerability discoveryhybrid fuzzerstatic analysissymbolic executionobject-oriented fuzzing
spellingShingle Xinglu He
Pengfei Wang
Kai Lu
Xu Zhou
ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries
Applied Sciences
vulnerability discovery
hybrid fuzzer
static analysis
symbolic execution
object-oriented fuzzing
title ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries
title_full ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries
title_fullStr ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries
title_full_unstemmed ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries
title_short ObFuzzer: Object-Oriented Hybrid Fuzzer for Binaries
title_sort obfuzzer object oriented hybrid fuzzer for binaries
topic vulnerability discovery
hybrid fuzzer
static analysis
symbolic execution
object-oriented fuzzing
url https://www.mdpi.com/2076-3417/12/19/9782
work_keys_str_mv AT xingluhe obfuzzerobjectorientedhybridfuzzerforbinaries
AT pengfeiwang obfuzzerobjectorientedhybridfuzzerforbinaries
AT kailu obfuzzerobjectorientedhybridfuzzerforbinaries
AT xuzhou obfuzzerobjectorientedhybridfuzzerforbinaries