ICSE 2024
Fri 12 - Sun 21 April 2024 Lisbon, Portugal
Thu 18 Apr 2024 15:00 - 15:15 at Fernando Pessoa - Fuzzing 2 Chair(s): Thuan Pham

Fuzzing has achieved tremendous success in discovering bugs and vulnerabilities in various software systems. Systems under test (SUTs) that take in programming or formal language as inputs, e.g., compilers, runtime engines, constraint solvers, and software libraries with accessible APIs, are especially important as they are fundamental building blocks of software development. However, existing fuzzers for such systems often target a specific language, and thus cannot be easily applied to other languages or even other versions of the same language. Moreover, the inputs generated by existing fuzzers are often limited to specific features of the input language, and thus can hardly reveal bugs related to other or new features. This paper presents Fuzz4All, the first fuzzer that is \textit{universal} in the sense that it can target many different input languages and many different features of these languages. The key idea behind Fuzz4All is to leverage large language models (LLMs) as an input generation and mutation engine, which enables the approach to produce diverse and realistic inputs for any practically relevant language. To realize this potential, we present a novel autoprompting technique, which creates LLM prompts that are well-suited for fuzzing, and a novel LLM-powered fuzzing loop, which iteratively updates the prompt to create new fuzzing inputs. We evaluate Fuzz4All on nine systems under test that take in six different languages (C, C++, Go, SMT2, Java and Python) as inputs. The evaluation shows, across all six languages, that universal fuzzing achieves higher coverage than existing, language-specific fuzzers. Furthermore, Fuzz4All has identified 76 bugs in widely used systems, such as GCC, Clang, Z3, CVC5, OpenJDK, and the Qiskit quantum computing platform, with 47 bugs already confirmed by developers as previously unknown.

Thu 18 Apr

Displayed time zone: Lisbon change

14:00 - 15:30
Fuzzing 2Software Engineering in Practice / Research Track at Fernando Pessoa
Chair(s): Thuan Pham The University of Melbourne
14:00
15m
Talk
Are We There Yet? Unraveling the State-of-the-Art Smart Contract Fuzzers
Research Track
Shuohan Wu Hong Kong Polytechnic University, zihao li The Hong Kong Polytechnic Universituy, Luyi Yan Hong Kong Polytechnic University, Weimin Chen The Hong Kong Polytechnic University, Muhui Jiang The Hong Kong Polytechnic University, Chenxu Wang Xi'an Jiaotong University, Xiapu Luo The Hong Kong Polytechnic University, Hao Zhou Hong Kong Polytechnic University
14:15
15m
Talk
RPG: Rust Library Fuzzing with Pool-based Fuzz Target Generation and Generic Support
Research Track
Zhiwu Xu Shenzhen University, Bohao Wu CSSE, Shenzhen University, Cheng Wen Guangzhou Institute of Technology, Xidian University, Bin Zhang Shenzhen University, Shengchao Qin Fermat Labs, Huawei, Mengda He Fermat Labs, Huawei
DOI Pre-print
14:30
15m
Talk
Extrapolating Coverage Rate in Greybox Fuzzing
Research Track
Danushka Liyanage Monash University, Australia, Seongmin Lee Max Planck Institute for Security and Privacy (MPI-SP), Marcel Böhme MPI-SP, Bochum, Kla Tantithamthavorn Monash University
DOI Pre-print
14:45
15m
Talk
FuzzInMem: Fuzzing Programs via In-memory Structures
Research Track
Xuwei Liu Purdue University, USA, Wei You Renmin University of China, Yapeng Ye Purdue University, Zhuo Zhang Purdue University, Jianjun Huang Renmin University of China, Xiangyu Zhang Purdue University
15:00
15m
Talk
Fuzz4All: Universal Fuzzing with Large Language Models
Research Track
Chunqiu Steven Xia University of Illinois at Urbana-Champaign, Matteo Paltenghi University of Stuttgart, Jia Le Tian UIUC, Michael Pradel University of Stuttgart, Lingming Zhang University of Illinois at Urbana-Champaign
Pre-print
15:15
15m
Talk
MicroFuzz: An Efficient Fuzzing Framework for Microservices
Software Engineering in Practice
Peng Di Ant Group, Bingchang Liu Ant Group, Yiyi Gao Ant Group