In this study, we investigate the limits of the current state of the art AI system for detecting buffer overflows and compare it with current static analysis tools. To do so, we developed a code generator, s-bAbI, capable of producing an arbitrarily large number of code samples of controlled complexity. We found that the static analysis engines we examined have good precision, but poor recall on this dataset, except for a sound static analyzer that has good precision and recall. We found that the state of the art AI system, a memory network modeled after Choi et al. [1], can achieve similar performance to the static analysis engines, but requires an exhaustive amount of training data in order to do so. Our work points towards future approaches that may solve these problems; namely, using representations of code that can capture appropriate scope information and using deep learning methods that are able to perform arithmetic operations.
翻译:在本研究中,我们调查了目前最先进的识别缓冲溢出物的AI系统,并将其与目前的静态分析工具进行比较;为此,我们开发了一个代码生成器,S-BAbI,能够任意生成大量受控复杂度的代码样本;我们发现,我们所检查的静态分析引擎非常精确,但对这一数据集的记忆力很差,但除了一个精确度很高的音响静态分析器之外,我们发现,以Choi等人为模型的记忆网络AI系统,其状态可以取得与静态分析引擎类似的性能,但需要详尽的培训数据才能做到这一点。我们对于今后可能解决这些问题的方法的工作点,即使用能够捕捉适当范围信息的代码表述,并使用能够进行算术操作的深层学习方法。