Automatic Feature Learning for Predicting Vulnerable Software Components

被引:114
作者
Hoa Khanh Dam [1 ]
Truyen Tran [2 ]
Trang Pham [2 ]
Ng, Shien Wee [1 ]
Grundy, John [3 ]
Ghose, Aditya [1 ]
机构
[1] Univ Wollongong, Sch Comp & Informat Technol, Fac Engn & Informat Sci, Wollongong, NSW 2522, Australia
[2] Deakin Univ, Sch Informat Technol, Waurn Ponds, Vic 3216, Australia
[3] Monash Univ, Fac Informat Technol, Clayton, Vic 3800, Australia
关键词
Software vulnerability prediction; mining software engineering repositories; empirical software engineering; CODE CHURN; COMPLEXITY; METRICS;
D O I
10.1109/TSE.2018.2881961
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Code flaws or vulnerabilities are prevalent in software systems and can potentially cause a variety of problems including deadlock, hacking, information loss and system failure. A variety of approaches have been developed to try and detect the most likely locations of such code vulnerabilities in large code bases. Most of them rely on manually designing code features (e.g., complexity metrics or frequencies of code tokens) that represent the characteristics of the potentially problematic code to locate. However, all suffer from challenges in sufficiently capturing both semantic and syntactic representation of source code, an important capability for building accurate prediction models. In this paper, we describe a new approach, built upon the powerful deep learning Long Short Term Memory model, to automatically learn both semantic and syntactic features of code. Our evaluation on 18 Android applications and the Firefox application demonstrates that the prediction power obtained from our learned features is better than what is achieved by state of the art vulnerability prediction models, for both within-project prediction and cross-project prediction.
引用
收藏
页码:67 / 85
页数:19
相关论文
共 59 条
[1]   Graph-based Statistical Language Model for Code [J].
Anh Tuan Nguyen ;
Nguyen, Tien N. .
2015 IEEE/ACM 37TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, VOL 1, 2015, :858-868
[2]  
[Anonymous], 2008, SIGSOFT
[3]   A Hitchhiker's guide to statistical tests for assessing randomized algorithms in software engineering [J].
Arcuri, Andrea ;
Briand, Lionel .
SOFTWARE TESTING VERIFICATION & RELIABILITY, 2014, 24 (03) :219-250
[4]   One Technique is Not Enough: A Comparison of Vulnerability Discovery Techniques [J].
Austin, Andrew ;
Williams, Laurie .
2011 FIFTH INTERNATIONAL SYMPOSIUM ON EMPIRICAL SOFTWARE ENGINEERING AND MEASUREMENT (ESEM 2011), 2011, :97-106
[5]  
Baroni M, 2014, PROCEEDINGS OF THE 52ND ANNUAL MEETING OF THE ASSOCIATION FOR COMPUTATIONAL LINGUISTICS, VOL 1, P238
[6]   Random forests [J].
Breiman, L .
MACHINE LEARNING, 2001, 45 (01) :5-32
[7]   A systematic review of software fault prediction studies [J].
Catal, Cagatay ;
Diri, Banu .
EXPERT SYSTEMS WITH APPLICATIONS, 2009, 36 (04) :7346-7354
[8]   Static Analysis and Penetration Testing from the Perspective of Maintenance Teams [J].
Ceccato, Mariano ;
Scandariato, Riccardo .
ESEM'16: PROCEEDINGS OF THE 10TH ACM/IEEE INTERNATIONAL SYMPOSIUM ON EMPIRICAL SOFTWARE ENGINEERING AND MEASUREMENT, 2016,
[9]   Using complexity, coupling, and cohesion metrics as early indicators of vulnerabilities [J].
Chowdhury, Istehad ;
Zulkernine, Mohammad .
JOURNAL OF SYSTEMS ARCHITECTURE, 2011, 57 (03) :294-313
[10]  
Cun Y. L., 1990, ADV NEURAL INFORM PR, V2, P396