FuzzerGym: A Competitive Framework for Fuzzing and Learning
Not on the map. Why?
Abstract (arXiv)
Fuzzing is a commonly used technique designed to test software by automatically crafting program inputs. Currently, the most successful fuzzing algorithms emphasize simple, low-overhead strategies with the ability to efficiently monitor program state during execution. Through compile-time instrumentation, these approaches have access to numerous aspects of program state including coverage, data flow, and heterogeneous fault detection and classification. However, existing approaches utilize blind random mutation strategies when generating test inputs. We present a different approach that uses this state information to optimize mutation operators using reinforcement learning (RL). By integrating OpenAI Gym with libFuzzer we are able to simultaneously leverage advancements in reinforcement learning as well as fuzzing to achieve deeper coverage across several varied benchmarks. Our technique connects the rich, efficient program monitors provided by LLVM Santizers with a deep neural net to learn mutation selection strategies directly from the input data. The cross-language, asynchronous architecture we developed enables us to apply any OpenAI Gym compatible deep reinforcement learning algorithm to any fuzzing problem with minimal slowdown.
Key facts. Cited by 4 papers in the map (data through 7 Oct 2026). First posted on arXiv 19 Jul 2018.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2022: 2; 2023: 2.
4 papers.
- 2023Revisiting Neural Program Smoothing for Fuzzing28 Sep 2023
- 2023BertRLFuzzer: A BERT and Reinforcement Learning Based Fuzzer21 May 2023
- 2022A Comparison of Reinforcement Learning Frameworks for Software Testing Tasks25 Aug 2022
- 2022Search-Based Testing of Reinforcement Learning7 May 2022