End-to-End Prediction of Buffer Overruns from Raw Source Code via Neural Memory Networks

End-to-End Prediction of Buffer Overruns from Raw Source Code via Neural Memory Networks

Min-je Choi, Sehun Jeong, Hakjoo Oh, Jaegul Choo

Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence
Main track. Pages 1546-1553. https://doi.org/10.24963/ijcai.2017/214

Detecting buffer overruns from a source code is one of the most common and yet challenging tasks in program analysis. Current approaches based on rigid rules and handcrafted features are limited 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 code samples demonstrate that our proposed model is capable of accurately detecting different types of 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.
Keywords:
Machine Learning: Neural Networks
Machine Learning: New Problems
Machine Learning: Deep Learning
Multidisciplinary Topics and Applications: Knowledge-based Software Engineering