Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box Fuzzing

Control Flow Graphs (CFGs) provide fundamental data for many program analyses, such as malware analysis, vulnerability detection, code similarity analysis, etc. Existing techniques for constructing control flow graphs include static, dynamic, and hybrid analysis, which each having their own advantag...

Full description

Bibliographic Details
Main Authors: Kailong Zhu, Yuliang Lu, Hui Huang, Lu Yu, Jiazhen Zhao
Format: Article
Language:English
Published: MDPI AG 2021-02-01
Series:Applied Sciences
Subjects:
Online Access:https://www.mdpi.com/2076-3417/11/3/1351
id doaj-f2e2a5a3e7f644d5b233179834823ab4
record_format Article
spelling doaj-f2e2a5a3e7f644d5b233179834823ab42021-02-03T00:06:42ZengMDPI AGApplied Sciences2076-34172021-02-01111351135110.3390/app11031351Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box FuzzingKailong Zhu0Yuliang Lu1Hui Huang2Lu Yu3Jiazhen Zhao4College of Electronic Engineering, National University of Defense Technology, Hefei 230037, ChinaCollege of Electronic Engineering, National University of Defense Technology, Hefei 230037, ChinaCollege of Electronic Engineering, National University of Defense Technology, Hefei 230037, ChinaCollege of Electronic Engineering, National University of Defense Technology, Hefei 230037, ChinaCollege of Electronic Engineering, National University of Defense Technology, Hefei 230037, ChinaControl Flow Graphs (CFGs) provide fundamental data for many program analyses, such as malware analysis, vulnerability detection, code similarity analysis, etc. Existing techniques for constructing control flow graphs include static, dynamic, and hybrid analysis, which each having their own advantages and disadvantages. However, due to the difficulty of resolving indirect jump relations, the existing techniques are limited in completeness. In this paper, we propose a practical technique that applies static analysis and dynamic analysis to construct more complete control flow graphs. The main innovation of our approach is to adopt <i>directed gray-box fuzzing (DGF)</i> instead of <i>coverage-based gray-box fuzzing (CGF)</i> used in the existing approach to generate test cases that can exercise indirect jumps. We first employ a static analysis to construct the static CFGs without indirect jump relations. Then, we utilize directed gray-box fuzzing to generate test cases and resolve indirect jump relations by monitoring the execution traces of these test cases. Finally, we combine the static CFGs with indirect jump relations to construct more complete CFGs. In addition, we also propose an <i>iterative feedback mechanism</i> to further improve the completeness of CFGs. We have implemented our technique in a prototype and evaluated it through comparing with the existing approaches on eight benchmarks. The results show that our prototype can resolve more indirect jump relations and construct more complete CFGs than existing approaches.https://www.mdpi.com/2076-3417/11/3/1351control flow graphhybrid analysisdirected gray-box fuzzingindirect jump relations
collection DOAJ
language English
format Article
sources DOAJ
author Kailong Zhu
Yuliang Lu
Hui Huang
Lu Yu
Jiazhen Zhao
spellingShingle Kailong Zhu
Yuliang Lu
Hui Huang
Lu Yu
Jiazhen Zhao
Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box Fuzzing
Applied Sciences
control flow graph
hybrid analysis
directed gray-box fuzzing
indirect jump relations
author_facet Kailong Zhu
Yuliang Lu
Hui Huang
Lu Yu
Jiazhen Zhao
author_sort Kailong Zhu
title Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box Fuzzing
title_short Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box Fuzzing
title_full Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box Fuzzing
title_fullStr Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box Fuzzing
title_full_unstemmed Constructing More Complete Control Flow Graphs Utilizing Directed Gray-Box Fuzzing
title_sort constructing more complete control flow graphs utilizing directed gray-box fuzzing
publisher MDPI AG
series Applied Sciences
issn 2076-3417
publishDate 2021-02-01
description Control Flow Graphs (CFGs) provide fundamental data for many program analyses, such as malware analysis, vulnerability detection, code similarity analysis, etc. Existing techniques for constructing control flow graphs include static, dynamic, and hybrid analysis, which each having their own advantages and disadvantages. However, due to the difficulty of resolving indirect jump relations, the existing techniques are limited in completeness. In this paper, we propose a practical technique that applies static analysis and dynamic analysis to construct more complete control flow graphs. The main innovation of our approach is to adopt <i>directed gray-box fuzzing (DGF)</i> instead of <i>coverage-based gray-box fuzzing (CGF)</i> used in the existing approach to generate test cases that can exercise indirect jumps. We first employ a static analysis to construct the static CFGs without indirect jump relations. Then, we utilize directed gray-box fuzzing to generate test cases and resolve indirect jump relations by monitoring the execution traces of these test cases. Finally, we combine the static CFGs with indirect jump relations to construct more complete CFGs. In addition, we also propose an <i>iterative feedback mechanism</i> to further improve the completeness of CFGs. We have implemented our technique in a prototype and evaluated it through comparing with the existing approaches on eight benchmarks. The results show that our prototype can resolve more indirect jump relations and construct more complete CFGs than existing approaches.
topic control flow graph
hybrid analysis
directed gray-box fuzzing
indirect jump relations
url https://www.mdpi.com/2076-3417/11/3/1351
work_keys_str_mv AT kailongzhu constructingmorecompletecontrolflowgraphsutilizingdirectedgrayboxfuzzing
AT yulianglu constructingmorecompletecontrolflowgraphsutilizingdirectedgrayboxfuzzing
AT huihuang constructingmorecompletecontrolflowgraphsutilizingdirectedgrayboxfuzzing
AT luyu constructingmorecompletecontrolflowgraphsutilizingdirectedgrayboxfuzzing
AT jiazhenzhao constructingmorecompletecontrolflowgraphsutilizingdirectedgrayboxfuzzing
_version_ 1724290235785805824