Toward Large-Scale Vulnerability Discovery using Machine Learning
Authors:
Top Cited Papers
Open Access
- 9 March 2016
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 85-96
Abstract
With sustained growth of software complexity, finding security vulnerabilities in operating systems has become an important necessity. Nowadays, OS are shipped with thousands of binary executables. Unfortunately, methodologies and tools for an OS scale program testing within a limited time budget are still missing. In this paper we present an approach that uses lightweight static and dynamic features to predict if a test case is likely to contain a software vulnerability using machine learning techniques. To show the effectiveness of our approach, we set up a large experiment to detect easily exploitable memory corruptions using 1039 Debian programs obtained from its bug tracker, collected 138,308 unique execution traces and statically explored 76,083 different subsequences of function calls. We managed to predict with reasonable accuracy which programs contained dangerous memory corruptions. We also developed and implemented VDiscover, a tool that uses state-of-the-art Machine Learning techniques to predict vulnerabilities in test cases. Such tool will be released as open-source to encourage the research of vulnerability discovery at a large scale, together with VDiscovery, a public dataset that collects raw analyzed dataKeywords
This publication has 24 references indexed in Scilit:
- Automatic exploit generationCommunications of the ACM, 2014
- SAGECommunications of the ACM, 2012
- Checksum-Aware Fuzzing Combined with Dynamic Taint Analysis and Symbolic ExecutionACM Transactions on Information and System Security, 2011
- Grammar-based whitebox fuzzingACM SIGPLAN Notices, 2008
- Large-Scale Bayesian Logistic Regression for Text CategorizationTechnometrics, 2007
- Reducing the Dimensionality of Data with Neural NetworksScience, 2006
- Scientific Debugging2006
- Improving security using extensible lightweight static analysisIEEE Software, 2002
- Support vector machines for spam categorizationIEEE Transactions on Neural Networks, 1999
- Undecidability of static analysisACM Letters on Programming Languages and Systems, 1992