A systematic review of fuzzing based on machine learning techniques
arXiv:1908.01262 · doi:10.1371/journal.pone.0237749
Abstract
Security vulnerabilities play a vital role in network security system. Fuzzing technology is widely used as a vulnerability discovery technology to reduce damage in advance. However, traditional fuzzing techniques have many challenges, such as how to mutate input seed files, how to increase code coverage, and how to effectively bypass verification. Machine learning technology has been introduced as a new method into fuzzing test to alleviate these challenges. This paper reviews the research progress of using machine learning technology for fuzzing test in recent years, analyzes how machine learning improve the fuzz process and results, and sheds light on future work in fuzzing. Firstly, this paper discusses the reasons why machine learning techniques can be used for fuzzing scenarios and identifies six different stages in which machine learning have been used. Then this paper systematically study the machine learning based fuzzing models from selection of machine learning algorithm, pre-processing methods, datasets, evaluation metrics, and hyperparameters setting. Next, this paper assesses the performance of the machine learning models based on the frequently used evaluation metrics. The results of the evaluation prove that machine learning technology has an acceptable capability of categorize predictive for fuzzing. Finally, the comparison on capability of discovering vulnerabilities between traditional fuzzing tools and machine learning based fuzzing tools is analyzed. The results depict that the introduction of machine learning technology can improve the performance of fuzzing. However, there are still some limitations, such as unbalanced training samples and difficult to extract the characteristics related to vulnerabilities.
References in corpus (17)
- Semi-Supervised Classification with Graph Convolutional Networks
- Playing Atari with Deep Reinforcement Learning
- word2vec Explained: deriving Mikolov et al.'s negative-sampling word-embedding method
- Not all bytes are equal: Neural byte sieve for fuzzing
- Learning-Guided Network Fuzzing for Testing Cyber-Physical System Defences
- Faster Fuzzing: Reinitialization with Deep Neural Models
- Learn&Fuzz: Machine Learning for Input Fuzzing
- SmartSeed: Smart Seed Generation for Efficient Fuzzing
- V-Fuzz: Vulnerability-Oriented Evolutionary Fuzzing
- Adaptive Grey-Box Fuzz-Testing with Thompson Sampling
- Montage: A Neural Network Language Model-Guided JavaScript Engine Fuzzer
- FuzzerGym: A Competitive Framework for Fuzzing and Learning
- Format-aware Learn&Fuzz: Deep Test Data Generation for Efficient Fuzzing
- MEUZZ: Smart Seed Scheduling for Hybrid Fuzzing
- Recurrent Neural Networks for Fuzz Testing Web Browsers
- Side-Channel Aware Fuzzing
- Improving Grey-Box Fuzzing by Modeling Program Behavior
Cited by in corpus (5)
- The Progress, Challenges, and Perspectives of Directed Greybox Fuzzing
- Literature review on vulnerability detection using NLP technology
- SoK: Where to Fuzz? Assessing Target Selection Methods in Directed Fuzzing
- Revisiting Neural Program Smoothing for Fuzzing
- What Happens When We Fuzz? Investigating OSS-Fuzz Bug History