Predicting Vulnerable Software Components through Deep Neural Network
Authors:
Open Access
- 2 June 2017
- conference paper
- Published by Association for Computing Machinery (ACM)
- p. 6-10
Abstract
Vulnerabilities need to be detected and removed from software. Although previous studies demonstrated the usefulness of employing prediction techniques in deciding about vulnerabilities of software components, the improvement of effectiveness of these prediction techniques is still a grand challenging research question. This paper employed a technique based on a deep neural network with rectifier linear units trained with stochastic gradient descent method and batch normalization, for predicting vulnerable software components. The features are defined as continuous sequences of tokens in source code files. Besides, a statistical feature selection algorithm is then employed to reduce the feature and search space. We evaluated the proposed technique based on some Java Android applications, and the results demonstrated that the proposed technique could predict vulnerable classes, i.e., software components, with high precision, accuracy and recall.Keywords
This publication has 17 references indexed in Scilit:
- Predicting Vulnerable Software Components through N-Gram Analysis and Statistical Feature Selection2015
- Challenges with applying vulnerability prediction models2015
- Deep learning in neural networks: An overviewNeural Networks, 2015
- Feature Selections for Effectively Localizing Faulty Events in GUI Applications2014
- Trimming Test Suites with Coincidentally Correct Test Cases for Enhancing Fault Localizations2014
- Software vulnerability prediction using text analysis techniques2012
- Context-Dependent Pre-Trained Deep Neural Networks for Large-Vocabulary Speech RecognitionIEEE Transactions on Audio, Speech, and Language Processing, 2011
- Prioritizing software security fortification throughcode-level metrics2008
- Mining metrics to predict component failures2006
- Predicting the location and number of faults in large software systemsIEEE Transactions on Software Engineering, 2005