arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 1803.04497cs.SEcs.LGstat.ML
收藏

利用机器学习自动检测软件漏洞

Automated software vulnerability detection with machine learning

Draper(德雷珀);Boston University(波士顿大学);Johns Hopkins University(约翰斯·霍普金斯大学);Northeastern University(东北大学)
Jacob A. Harer, Louis Y. Kim, Rebecca L. Russell, Onur Ozdemir, Leonard R. Kosta, Akshay Rangamani, Lei H. Hamilton, Gabriel I. Centeno, Jonathan R. Key, Paul M… 展开作者

Jacob A. Harer, Louis Y. Kim, Rebecca L. Russell, Onur Ozdemir, Leonard R. Kosta, Akshay Rangamani, Lei H. Hamilton, Gabriel I. Centeno, Jonathan R. Key, Paul M. Ellingwood, Erik Antelman, Alan Mackay, Marc W. McConley, Jeffrey M. Opper, Peter Chin, Tomo Lazovich

摘要:

每年在生产软件中发现数以千计的安全漏洞,这些漏洞要么公开报告给公共漏洞和暴露数据库,要么在专有代码中发现。漏洞通常以微妙的方式表现出来,这些方式对于代码审查者或开发人员本身来说并不明显。有了大量可供分析的开源代码,就有机会直接从数据中了解可能导致安全漏洞的错误模式。在本文中,我们提出了一个数据驱动的方法,利用机器学习,专门应用于C和C++程序的漏洞检测。我们首先编译了一个包含数十万个开源函数的大型数据集,这些函数标记有静态分析器的输出。然后,我们将直接应用于源代码的方法与应用于从构建过程中提取的工件的方法进行比较,发现基于源代码的模型性能更好。我们还将深度神经网络模型的应用与更传统的模型(如随机森林)进行了比较,发现最佳性能来自于将深度模型学习的特征与基于树的模型相结合。最终,我们的最高性能模型实现了0.49的精确度-召回率曲线下面积和0.87的ROC曲线下面积。

英文摘要:

Thousands of security vulnerabilities are discovered in production software each year, either reported publicly to the Common Vulnerabilities and Exposures database or discovered internally in proprietary code. Vulnerabilities often manifest themselves in subtle ways that are not obvious to code reviewers or the developers themselves. With the wealth of open source code available for analysis, there is an opportunity to learn the patterns of bugs that can lead to security vulnerabilities directly from data. In this paper, we present a data-driven approach to vulnerability detection using machine learning, specifically applied to C and C++ programs. We first compile a large dataset of hundreds of thousands of open-source functions labeled with the outputs of a static analyzer. We then compare methods applied directly to source code with methods applied to artifacts extracted from the build process, finding that source-based models perform better. We also compare the application of deep neural network models with more traditional models such as random forests and find the best performance comes from combining features learned by deep models with tree-based models. Ultimately, our highest performing model achieves an area under the precision-recall curve of 0.49 and an area under the ROC curve of 0.87.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑