Fuzzing is a software vulnerability detection method wherein a large number of random inputs are fed into a program in search of ones that will cause a crash, unwanted information leak, or other unintended behavior. In automated fuzzing, a program generates these inputs. Generally, automated fuzzers suffer from the shortcoming that they tend to get stuck trying redundant inputs. For this reason, AI-based fuzzers have recently been developed. In this recipe, we'll employ NEUZZ, a neural network-based fuzzer by She et al. (see https://arxiv.org/abs/1807.05620), to find unknown vulnerabilities in software.
Neural network-assisted fuzzing
Getting ready
The following recipe requires an Ubuntu 16.04 or 18.04 virtual...