End-to-End Prediction of Buffer Overruns from Raw Source Code via Neural Memory Networks
arXiv:1703.02458
Abstract
Detecting buffer overruns from a source code is one of the most common and yet challenging tasks in program analysis. Current approaches have mainly relied on rigid rules and handcrafted features devised by a few experts, limiting themselves in terms of flexible applicability and robustness due to diverse bug patterns and characteristics existing in sophisticated real-world software programs. In this paper, we propose a novel, data-driven approach that is completely end-to-end without requiring any hand-crafted features, thus free from any program language-specific structural limitations. In particular, our approach leverages a recently proposed neural network model called memory networks that have shown the state-of-the-art performances mainly in question-answering tasks. Our experimental results using source codes demonstrate that our proposed model is capable of accurately detecting simple buffer overruns. We also present in-depth analyses on how a memory network can learn to understand the semantics in programming languages solely from raw source codes, such as tracing variables of interest, identifying numerical values, and performing their quantitative comparisons.
6 pages + 1 appendix, 5 figures
References in corpus (5)
Cited by in corpus (6)
- Learning to map source code to software vulnerability using code-as-a-graph
- Software Vulnerability Detection via Deep Learning over Disaggregated Code Graph Representation
- Neural Bug Finding: A Study of Opportunities and Challenges
- DeepBugs: A Learning Approach to Name-based Bug Detection
- VulSPG: Vulnerability detection based on slice property graph representation learning
- Adaptive Recurrent Neural Network Based on Mixture Layer