FuzzerGym: A Competitive Framework for Fuzzing and Learning

07/19/2018
by   William Drozd, et al.
6

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.

READ FULL TEXT

page 2

page 4

page 8

page 9

page 10

page 11

page 12

research
01/13/2023

Mutation Testing of Deep Reinforcement Learning Based on Real Faults

Testing Deep Learning (DL) systems is a complex task as they do not beha...
research
08/13/2018

Visual Sensor Network Reconfiguration with Deep Reinforcement Learning

We present an approach for reconfiguration of dynamic visual sensor netw...
research
05/20/2019

Deep Reinforcement Learning Based Parameter Control in Differential Evolution

Adaptive Operator Selection (AOS) is an approach that controls discrete ...
research
11/22/2019

DeepSynth: Program Synthesis for Automatic Task Segmentation in Deep Reinforcement Learning

We propose a method for efficient training of deep Reinforcement Learnin...
research
06/09/2023

Reinforcement Learning for Mutation Operator Selection in Automated Program Repair

Automated program repair techniques aim to aid software developers with ...
research
01/14/2018

Deep Reinforcement Fuzzing

Fuzzing is the process of finding security vulnerabilities in input-proc...
research
11/10/2017

Not all bytes are equal: Neural byte sieve for fuzzing

Fuzzing is a popular dynamic program analysis technique used to find vul...

Please sign up or login with your details

Forgot password? Click here to reset