Microsoft uses 'neural fuzzing' technique to find software bugs

Posted Nov 14, 2017 by James Walker
Microsoft has announced a method for uncovering bugs and vulnerabilities in software using machine learning capabilities. Called neural fuzzing, the technique uses neural networks to complement regular fuzz testing, a common quality assurance practice.
AI helps programmers to be more efficient
AI helps programmers to be more efficient
Pexels / luis gomes
Fuzz testing, or fuzzing, is a way of analysing a program to find inputs likely to result in exploitable errors. These typically cause some kind of vulnerability that a malicious attacker could utilise, such as a buffer overflow or memory access violation.
Testing software is a time-consuming and difficult process. As the scale and complexity grows, it becomes more difficult to account for every possible form of input. Microsoft tried to improve the accuracy and performance of fuzz testing by adding a neural network to the procedure.
The neural network learns over time as it observes the output of previous fuzz test runs. It then acts on its own data to uncover otherwise overlooked vulnerabilities. In tests of the technique, Microsoft said the AI offered "significant improvements" over regular testing. It resulted in improved code coverage and a lower crash rate for the program.
READ NEXT: AI chatbot used to combat phishing by wasting scammers' time
The research is still experimental and Microsoft said it's optimistic that performance can be further improved. The neural network currently operates on a subset of fuzzing operations. As more parameters are added to the model, the AI will increase its accuracy and uncover additional potential bugs.
Giving the AI access to more training data will be important as it expands its scope, so Microsoft's considering an online version where anyone could upload code to have it fuzzed. The AI could then learn from all its ongoing fuzzing runs, accelerating its rate of training.
"We believe our neural fuzzing research project is just scratching the surface of what can be achieved using deep neural networks for fuzzing," said Microsoft. "Right now, our model only learns fuzzing locations, but we could also use it to learn other fuzzing parameters such as the type of mutation or strategy to apply. We are also considering online versions of our machine learning model, in which the fuzzer constantly learns from ongoing fuzzing iterations."
The technology has the potential to create more resilient programs that are less susceptible to hijacking. It could also help software proactively respond to emerging threats and lead to the development of new threat detection tools. Microsoft said it's a "simple" way to achieve efficient software testing.