Author:
Yang Jiageng,Liu Chuanyi,Fang Binxing
Abstract
AbstractCoverage-guided fuzzing is one of the most popular approaches to detect bugs in programs. Existing work has shown that coverage metrics are a crucial factor in guiding fuzzing exploration of targets. A fine-grained coverage metric can help fuzzing to detect more bugs and trigger more execution states. Cloud-native applications that written by Golang play an important role in the modern computing paradigm. However, existing fuzzers for Golang still employ coarse-grained block coverage metrics, and there is no fuzzer specifically for cloud-native applications, which hinders the bug detection in cloud-native applications. Using fine-grained coverage metrics introduces more seeds and even leads to seed explosion, especially in large targets such as cloud-native applications. Therefore, we employ an accurate edge coverage metric in fuzzer for Golang, which achieves finer test granularity and more accurate coverage information than block coverage metrics. To mitigate the seed explosion problem caused by fine-grained coverage metrics and large target sizes, we propose smart seed selection and adaptive task scheduling algorithms based on a variant of the classical adversarial multi-armed bandit (AMAB) algorithm. Extensive evaluation of our prototype on 16 targets in real-world cloud-native infrastructures shows that our approach detects 233% more bugs than go-fuzz, achieving an average coverage improvement of 100.7%. Our approach effectively mitigates seed explosion by reducing the number of seeds generated by 41% and introduces only 14% performance overhead.
Publisher
Springer Science and Business Media LLC
Reference52 articles.
1. Zalewski M (2014) American fuzzy lop. https://lcamtuf.coredump.cx/afl. Accessed 17 Feb 2024
2. Vyukov D (2021) go-fuzz: randomized testing for go. https://github.com/dvyukov/go-fuzz. Accessed 17 Feb 2024
3. Wilk J (2019) Python-afl. https://jwilk.net/software/python-afl. Accessed 17 Feb 2024
4. Jiang J, Xu H, Zhou Y (2021) Rulf: Rust library fuzzing via api dependency graph traversal. In: 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE). IEEE, Melbourne, pp 581–592
5. Google (2021) Go fuzzing. https://go.dev/security/fuzz. Accessed 17 Feb 2024