TY - GEN
T1 - Daisy
T2 - 45th IEEE/ACM International Conference on Software Engineering: Software Engineering in Practice, ICSE-SEIP 2023
AU - Zhang, Mingrui
AU - Zhou, Chijin
AU - Liu, Jianzhong
AU - Wang, Mingzhe
AU - Liang, Jie
AU - Zhu, Juan
AU - Jiang, Yu
N1 - Publisher Copyright:
© 2023 IEEE.
PY - 2023/9/20
Y1 - 2023/9/20
N2 - Fuzzing is increasingly used in industrial settings for vulnerability detection due to its scalability and effectiveness. Libraries require driver programs to feed the fuzzer-generated inputs into library-provided interfaces. Writing such drivers manually is tedious and error-prone, thus greatly hindering the widespread use of fuzzing in practical situations. Previous attempts at automatic driver synthesis perform static analysis on the libraries and their consumers. However, a lack of dynamic object usage information renders them ineffective at generating interface function calls with correct parameters and meaningful sequences. This severely limits fuzzing's bug-finding capabilities and can produce faulty drivers.In this paper, we propose Daisy, a driver synthesis framework, which extracts dynamic object usage sequences of library consumers to synthesize significantly more effective drivers. Daisy uses the following two steps to synthesize a fuzz driver for a library. First, it models each object's behaviors into an object usage sequence during the execution of its consumers. Next, it merges all the extracted sequences and constructs a series of interface calls with valid object usages based on the merged sequence. We implemented Daisy and evaluated its effectiveness on real-world libraries selected from both the Android Open Source Project (AOSP) and Google's FuzzBench. Daisy's synthesized drivers significantly outperform drivers produced by other state-of-the-art fuzz driver synthesizers. In addition, on applying Daisy to the latest versions of those extensively-fuzzed real-world libraries of the benchmark, e.g. libaom and freetype2, we also found 9 previously-unknown bugs with 3 CVEs assigned.
AB - Fuzzing is increasingly used in industrial settings for vulnerability detection due to its scalability and effectiveness. Libraries require driver programs to feed the fuzzer-generated inputs into library-provided interfaces. Writing such drivers manually is tedious and error-prone, thus greatly hindering the widespread use of fuzzing in practical situations. Previous attempts at automatic driver synthesis perform static analysis on the libraries and their consumers. However, a lack of dynamic object usage information renders them ineffective at generating interface function calls with correct parameters and meaningful sequences. This severely limits fuzzing's bug-finding capabilities and can produce faulty drivers.In this paper, we propose Daisy, a driver synthesis framework, which extracts dynamic object usage sequences of library consumers to synthesize significantly more effective drivers. Daisy uses the following two steps to synthesize a fuzz driver for a library. First, it models each object's behaviors into an object usage sequence during the execution of its consumers. Next, it merges all the extracted sequences and constructs a series of interface calls with valid object usages based on the merged sequence. We implemented Daisy and evaluated its effectiveness on real-world libraries selected from both the Android Open Source Project (AOSP) and Google's FuzzBench. Daisy's synthesized drivers significantly outperform drivers produced by other state-of-the-art fuzz driver synthesizers. In addition, on applying Daisy to the latest versions of those extensively-fuzzed real-world libraries of the benchmark, e.g. libaom and freetype2, we also found 9 previously-unknown bugs with 3 CVEs assigned.
KW - Driver Synthesis
KW - Dynamic Analysis
KW - Fuzzing
UR - https://www.scopus.com/pages/publications/85171745011
U2 - 10.1109/ICSE-SEIP58684.2023.00013
DO - 10.1109/ICSE-SEIP58684.2023.00013
M3 - 会议稿件
AN - SCOPUS:85171745011
T3 - Proceedings - International Conference on Software Engineering
SP - 87
EP - 98
BT - Proceedings - 2023 IEEE/ACM 45th International Conference on Software Engineering
PB - IEEE Computer Society
Y2 - 17 May 2023 through 19 May 2023
ER -