Skip to main content
QUICK REVIEW

[论文解读] Automated Vulnerability Detection in Source Code Using Deep Representation Learning

Rebecca L. Russell, Louis J. Kim|arXiv (Cornell University)|Jul 11, 2018
Software Engineering Research被引用 7
一句话总结

本文提出了一种基于深度学习的系统,用于使用来自数百万个开源函数的学得表示,自动检测C/C++源代码中的漏洞。通过将自定义词法分析器与卷积神经网络及基于筛选后静态分析器结果的随机森林集成相结合,该方法在基准数据集上实现了最先进性能,优于传统静态分析器和先前的机器学习方法。

ABSTRACT

Increasing numbers of software vulnerabilities are discovered every year whether they are reported publicly or discovered internally in proprietary code. These vulnerabilities can pose serious risk of exploit and result in system compromise, information leaks, or denial of service. We leveraged the wealth of C and C++ open-source code available to develop a large-scale function-level vulnerability detection system using machine learning. To supplement existing labeled vulnerability datasets, we compiled a vast dataset of millions of open-source functions and labeled it with carefully-selected findings from three different static analyzers that indicate potential exploits. The labeled dataset is available at: https://osf.io/d45bw/. Using these datasets, we developed a fast and scalable vulnerability detection tool based on deep feature representation learning that directly interprets lexed source code. We evaluated our tool on code from both real software packages and the NIST SATE IV benchmark dataset. Our results demonstrate that deep feature representation learning on source code is a promising approach for automated software vulnerability detection.

研究动机与目标

  • 应对开源和专有代码库中软件漏洞日益增长的挑战。
  • 克服基于规则的静态分析器在发现新型或复杂漏洞方面的局限性。
  • 利用大规模真实世界代码训练机器学习模型,使其能够泛化于多种漏洞模式。
  • 通过在词法化源代码上使用深度表示学习,开发一种可扩展的、细粒度函数级漏洞检测系统。
  • 通过结合深度神经网络特征与集成分类,提高检测准确率并减少误报。

提出的方法

  • 从Debian、GitHub和SATE IV Juliet测试套件中构建了超过1200万个C/C++函数的数据集。
  • 应用自定义词法分析器将源代码转换为适合深度学习的基于序列的标记化表示。
  • 使用三种静态分析器(Clang、Flawfinder、Cppcheck)对函数进行潜在漏洞标注,形成筛选后的数据集。
  • 训练多种机器学习模型,包括RNN、CNN和全连接网络,以从词法化代码中学习深度特征表示。
  • 将学得的深度特征与随机森林分类器结合,以提升泛化能力和预测性能。
  • 采用精确率-召回率和ROC AUC指标评估模型性能,并通过注意力图可视化解释预测结果。

实验结果

研究问题

  • RQ1在原始、词法化源代码上进行深度表示学习,能否有效检测跨多样化代码库的广泛软件漏洞?
  • RQ2在真实世界代码(Debian、GitHub)上的模型性能与在SATE IV等合成基准上的性能相比如何?
  • RQ3深度神经网络特征在漏洞检测中,与传统词袋或基于规则的表示相比,优势有多大?
  • RQ4结合深度特征与随机森林的集成模型,是否能比单一模型更显著地提升检测准确率和鲁棒性?
  • RQ5与成熟静态分析工具相比,该机器学习模型的预测在精确率、召回率和F1分数方面表现如何?

主要发现

  • CNN + 随机森林模型在自然代码测试集(Debian和GitHub)上实现了最高的PR AUC(0.518)和F1分数(0.566),优于BOW + RF和基于RNN的模型。
  • 在SATE IV基准上,CNN + RF模型实现了PR AUC为0.916,F1分数为0.824,显著优于Clang(F1: 0.450)和Flawfinder(F1: 0.365)等静态分析器。
  • 该模型在SATE IV数据集上的表现远优于在真实世界代码上的表现,可能是因为合成数据中标签更一致且分布更均衡。
  • 使用CNN和RNN的深度特征相比传统词袋表示,使F1分数提高了10–15%。
  • 卷积特征图的可视化使模型预测具有可解释性,能够突出显示与漏洞相关的代码区域。
  • 该系统表现出良好的可扩展性,无需编译即可快速处理大型代码库,并支持可调阈值以实现精确率-召回率之间的权衡。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。