Source Code Vulnerability Detection: Combining Code Language Models and Code Property Graphs

2024年04月23日
  • 简介
    目前,深度学习已成功应用于代码漏洞检测,通过学习代码序列或属性图。然而,基于序列的方法经常忽略了代码的基本属性,如语法、控制流和数据依赖性,而基于图的方法可能会低估代码的语义,并面临捕捉远距离上下文信息的挑战。为了解决这个问题,我们提出了Vul-LMGNN,这是一个统一的模型,将预训练的代码语言模型与代码属性图相结合,用于代码漏洞检测。Vul-LMGNN构建了一个代码属性图,将各种代码属性(包括语法、流控制和数据依赖性)集成到一个统一的图结构中,然后利用预训练的代码模型在代码属性图中提取本地语义特征作为节点嵌入。此外,为了有效地保留各种属性之间的依赖关系信息,我们引入了门控代码图神经网络(GNN)。通过在Vul-LMGNN中联合训练代码语言模型和门控代码GNN模块,我们的方法有效地利用了两种机制的优势。最后,我们利用预训练的CodeBERT作为辅助分类器,通过学习Vul-LMGNN和CodeBERT的线性插值得出最终的检测结果。在四个真实漏洞数据集上评估的结果表明,与六种最先进的方法相比,我们提出的方法表现更优。我们的源代码可以通过以下链接访问:https://github.com/Vul-LMGNN/vul-LMGGNN。
  • 图表
  • 解决问题
    本论文旨在解决代码漏洞检测中存在的问题,即现有的基于序列或基于图的方法难以同时考虑语法、控制流和数据依赖等多种代码属性,因此提出了一种基于预训练代码语言模型和代码属性图相结合的方法。
  • 关键思路
    本论文的关键思路是将预训练代码语言模型和代码属性图相结合,构建一个包含多种代码属性的统一图结构,并利用预训练代码模型提取代码属性图中的局部语义特征作为节点嵌入,同时引入门控代码图神经网络以有效保留各种属性之间的依赖关系。最后利用预训练的CodeBERT作为辅助分类器,得出最终的检测结果。
  • 其它亮点
    本论文的实验结果表明,所提出的方法在四个真实漏洞数据集上均表现出优异的性能,相较于六种现有方法具有明显优势。此外,作者还开源了代码,并使用了多种数据集进行了实验,具有较高的参考价值。
  • 相关研究
    与本论文相关的研究包括:CodeBERT、Graph Neural Networks for Natural Language Processing、Graph Convolutional Networks等。
PDF
原文
点赞 收藏 评论 分享到Link

沙发等你来抢

去评论