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...
Main Authors: | , , , , |
---|---|
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 |