Program State Sensitive Parallel Fuzzing for Real World Software
Fuzz testing is a widely used technique for software vulnerability detection, but it is still limited in finding bugs nested in the deep program states. Parallel testing is an augmented method aiming to make the best of the computing resource to expose more deep program bugs. However, current parall...
Main Authors: | , , , , |
---|---|
Format: | Article |
Language: | English |
Published: |
IEEE
2019-01-01
|
Series: | IEEE Access |
Subjects: | |
Online Access: | https://ieeexplore.ieee.org/document/8668503/ |
id |
doaj-e0ac5f17db5d4743aa9bd0091f9d59ab |
---|---|
record_format |
Article |
spelling |
doaj-e0ac5f17db5d4743aa9bd0091f9d59ab2021-03-29T22:48:58ZengIEEEIEEE Access2169-35362019-01-017425574256410.1109/ACCESS.2019.29057448668503Program State Sensitive Parallel Fuzzing for Real World SoftwareJiaxi Ye0https://orcid.org/0000-0001-6389-1056Bin Zhang1Ruilin Li2Chao Feng3Chaojing Tang4College of Electronic Science, National University of Defense Technology, Changsha, ChinaCollege of Electronic Science, National University of Defense Technology, Changsha, ChinaCollege of Electronic Science, National University of Defense Technology, Changsha, ChinaCollege of Electronic Science, National University of Defense Technology, Changsha, ChinaCollege of Electronic Science, National University of Defense Technology, Changsha, ChinaFuzz testing is a widely used technique for software vulnerability detection, but it is still limited in finding bugs nested in the deep program states. Parallel testing is an augmented method aiming to make the best of the computing resource to expose more deep program bugs. However, current parallel testing methods cannot deal well with task slicing so that the parallel nodes show serious duplication with each other, thus decreasing the efficiency in total. For instance, the original parallel mode of the well-known fuzzer American fuzzy lop (AFL) does not split the task and just synchronizes the interesting seeds without any internal execution information. In this paper, we put forward a novel program state sensitive parallel testing method, which: 1) splits the task into low correlated subtasks according to the program states and 2) adjusts the mutation engine to confine one instance's testing among its subtask-related code region as more as possible. Our method is an objective to reduce the testing collision between parallel instances and therefore improve the performance. We developed a new fuzzer called PAFL and implemented some experiments to investigate that if our parallel testing framework is positive when deploying multiple instances and if it shows a better path discovery compared with two state-of-the-art fuzzers, AFL and AFLFast. In the experiments, we employed PAFL with 1/2/4/8/16 to observe their path discovery and conclude that our new parallel framework is positive when using more multiple instances. We also compared PAFL with AFL and AFLFast by employing eight parallel instances for each fuzzer, and the results prove that our tool has the best path discovery among the three fuzzers. Compared with the original parallel AFL, PAFL can achieve averaged performance gains of 3.98, 3.04, 4.18, and 1.45 on the c++filt, objdump, readelf, and tcpdump, respectively. Besides, we took PAFL on binutils and libtiff, and finally, we found ten new bugs.https://ieeexplore.ieee.org/document/8668503/Computer securitysoftware testingparallel fuzzingvulnerability |
collection |
DOAJ |
language |
English |
format |
Article |
sources |
DOAJ |
author |
Jiaxi Ye Bin Zhang Ruilin Li Chao Feng Chaojing Tang |
spellingShingle |
Jiaxi Ye Bin Zhang Ruilin Li Chao Feng Chaojing Tang Program State Sensitive Parallel Fuzzing for Real World Software IEEE Access Computer security software testing parallel fuzzing vulnerability |
author_facet |
Jiaxi Ye Bin Zhang Ruilin Li Chao Feng Chaojing Tang |
author_sort |
Jiaxi Ye |
title |
Program State Sensitive Parallel Fuzzing for Real World Software |
title_short |
Program State Sensitive Parallel Fuzzing for Real World Software |
title_full |
Program State Sensitive Parallel Fuzzing for Real World Software |
title_fullStr |
Program State Sensitive Parallel Fuzzing for Real World Software |
title_full_unstemmed |
Program State Sensitive Parallel Fuzzing for Real World Software |
title_sort |
program state sensitive parallel fuzzing for real world software |
publisher |
IEEE |
series |
IEEE Access |
issn |
2169-3536 |
publishDate |
2019-01-01 |
description |
Fuzz testing is a widely used technique for software vulnerability detection, but it is still limited in finding bugs nested in the deep program states. Parallel testing is an augmented method aiming to make the best of the computing resource to expose more deep program bugs. However, current parallel testing methods cannot deal well with task slicing so that the parallel nodes show serious duplication with each other, thus decreasing the efficiency in total. For instance, the original parallel mode of the well-known fuzzer American fuzzy lop (AFL) does not split the task and just synchronizes the interesting seeds without any internal execution information. In this paper, we put forward a novel program state sensitive parallel testing method, which: 1) splits the task into low correlated subtasks according to the program states and 2) adjusts the mutation engine to confine one instance's testing among its subtask-related code region as more as possible. Our method is an objective to reduce the testing collision between parallel instances and therefore improve the performance. We developed a new fuzzer called PAFL and implemented some experiments to investigate that if our parallel testing framework is positive when deploying multiple instances and if it shows a better path discovery compared with two state-of-the-art fuzzers, AFL and AFLFast. In the experiments, we employed PAFL with 1/2/4/8/16 to observe their path discovery and conclude that our new parallel framework is positive when using more multiple instances. We also compared PAFL with AFL and AFLFast by employing eight parallel instances for each fuzzer, and the results prove that our tool has the best path discovery among the three fuzzers. Compared with the original parallel AFL, PAFL can achieve averaged performance gains of 3.98, 3.04, 4.18, and 1.45 on the c++filt, objdump, readelf, and tcpdump, respectively. Besides, we took PAFL on binutils and libtiff, and finally, we found ten new bugs. |
topic |
Computer security software testing parallel fuzzing vulnerability |
url |
https://ieeexplore.ieee.org/document/8668503/ |
work_keys_str_mv |
AT jiaxiye programstatesensitiveparallelfuzzingforrealworldsoftware AT binzhang programstatesensitiveparallelfuzzingforrealworldsoftware AT ruilinli programstatesensitiveparallelfuzzingforrealworldsoftware AT chaofeng programstatesensitiveparallelfuzzingforrealworldsoftware AT chaojingtang programstatesensitiveparallelfuzzingforrealworldsoftware |
_version_ |
1724190854285885440 |