FRIES: Fuzzing Rust Library Interactions via Efficient Ecosystem-Guided Target Generation
Rust has been extensively used in software development in the past decades due to its memory safety mechanisms and gradually matured ecosystems. Enhancing the quality of Rust libraries is critical to Rust ecosystems as the libraries are often the core component of software systems. Nevertheless, we observe that existing approaches fall short in testing Rust API interactions - they either lack a Rust ownership-compliant API testing method, fail to handle the large search space of function dependencies, or are limited by pre-selected codebases, resulting in inefficiencies in finding errors.
To address these issues, we propose a fuzzing technique, namely FRIES, that efficiently synthesizes and tests complex API interactions to identify defects in Rust libraries, and therefore promises to significantly improve the quality of Rust libraries. Behind our approach, a key technique is to traverse a weighted API dependency graph, which encodes not only syntactic dependency between functions but also the common usage patterns mined from the Rust ecosystem that reflect the programmer’s thinking. Combined with our efficient generation algorithm, such a graph structure significantly reduces the search space and lets us focus on finding hidden bugs in common application scenarios. Meanwhile, an ownership assurance algorithm is specially designed to ensure the validity of the generated Rust programs, notably improving the success rate of compiling fuzz targets. Experimental results demonstrate that this technique can indeed generate high-quality fuzz targets with minimal computational resources, while more efficiently discovering errors that have a greater impact on actual development, thereby mitigating the impact on the robustness of programs in the Rust ecosystem. So far, FRIES has identified 130 bugs, including 84 previously unknown bugs, in 20 well-known latest versions of Rust
libraries, of which 54 have been confirmed.
Fri 20 SepDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:30 - 11:50 | |||
10:30 20mTalk | Prospector: Boosting Directed Greybox Fuzzing for Large-Scale Target Sets with Iterative Prioritization Technical Papers Zhijie Zhang Institute of Information Engineering at Chinese Academy of Sciences; University of Chinese Academy of Sciences, Liwei Chen Institute of Information Engineering at Chinese Academy of Sciences; University of Chinese Academy of Sciences, Haolai Wei Institute of Information Engineering at Chinese Academy of Sciences; University of Chinese Academy of Sciences, Gang Shi Institute of Information Engineering at Chinese Academy of Sciences; University of Chinese Academy of Sciences, Dan Meng Institute of Information Engineering at Chinese Academy of Sciences; University of Chinese Academy of Sciences DOI | ||
10:50 20mTalk | FRIES: Fuzzing Rust Library Interactions via Efficient Ecosystem-Guided Target Generation Technical Papers Xizhe Yin Nanjing University, Yang Feng Nanjing University, Qingkai Shi Nanjing University, Zixi Liu Nanjing University, Hongwang Liu Nanjing University, Baowen Xu Nanjing University DOI | ||
11:10 20mTalk | DDGF: Dynamic Directed Greybox Fuzzing with Path Profiling Technical Papers Haoran Fang Shanghai Jiao Tong University, Kaikai Zhang Shanghai Jiao Tong University, Donghui Yu Shanghai Jiao Tong University, Yuanyuan Zhang Shanghai Jiao Tong University DOI Pre-print | ||
11:30 20mTalk | Logos: Log Guided Fuzzing for Protocol Implementations Technical Papers Feifan Wu Tsinghua University, Zhengxiong Luo National University of Singapore, Yanyang Zhao Tsinghua University, Qingpeng Du Beijing University of Posts and Telecommunications, Junze Yu Tsinghua University, Ruikang Peng Central South University, Heyuan Shi Central South University, Yu Jiang Tsinghua University DOI |