0 Abstract
深度学习技术可以自动从软件源代码中提取功能,从而广泛用于检测软件漏洞。大多数现有的深度学习方法都依赖整个功能或序列级程序切片来识别漏洞。但是,这些方法通常很难捕获全面的脆弱性语义,从而导致高误报率和假阴性率。在本文中,我们提出了GraphFVD,这是一种基于图形的新型属性细粒漏洞检测方法。
我们的方法从代码属性图中提取基于图形的属性切片,并引入了一个分层注意图卷积网络以学习图形嵌入。 GraphFVD提供了一个细粒的代码表示,该表示,捕获语法,控制流,数据流以及与漏洞相关的源代码的自然顺序顺序。我们评估了方法对两个现实世界漏洞数据集的有效性。实验结果表明,我们的方法在两个数据集上都优于现有的最新漏洞检测方法。
1 Intro
我们提出了一种新颖的细粒代码表示,从代码属性图中提取图形级程序切片(即基于属性图的漏洞候选或PRVC)。 PRVC结合了抽象语法,控制流,数据流和代码的顺序顺序,从而捕获了全面而精确的程序语义。
•我们设计一个分层注意力图卷积网络(HIERGCN),以学习PRVC的嵌入并预测漏洞。 HIERGCN在关系图卷积网络(RGCN)中引入了分层的关 ...
a山东省计算机网络重点实验室,山东省计算机科学中心(济南国家超级计算机中心),齐鲁工业大学(山东科学院),济南250014,中国b北京邮电大学网络空间安全学院,北京100876,中国c公共大数据国家重点实验室,贵州大学计算机科学与技术学院,贵阳550025
0 Abstract
漏洞检测是维护网络空间安全的有效手段。机器学习方法由于其准确性和自动化的优势,在软件安全领域引起了人们的广泛关注。然而,目前的研究主要集中在训练数据和测试数据属于同一域的域内漏洞检测上。由于应用场景、编码习惯等因素,不同软件项目中的漏洞可能服从不同的概率分布。当机器学习方法应用于一个全新的项目时,这种差异会影响它们的性能。为了解决这个冷启动问题,我们提出了一个使用图嵌入和深度域自适应(VulGDA)的跨域漏洞检测框架。它以多种跨域方式工作,包括零样本方式,即目标域中没有标记数据可用于训练。将VulGDA分解为图嵌入和域自适应。在图嵌入阶段,我们将源代码中的样本转换为图表示,其中元素根据其语法和语义关系直接连接。然后,我们将来自图中定义的邻居和边的信息聚合为实值向量。通过图形嵌入,VulGDA提取了全面的漏洞特征 ...
Papers
未读
0 Abstract
我们提出并发布了一个新的漏洞源代码数据集。我们通过抓取安全问题网站、从相应项目中提取漏洞修复提交和源代码来整理数据集。我们的新数据集包含跨越 150 个 CWE 的 18,945 个脆弱函数,以及从 7,514 个提交中提取的 330,492 个非脆弱函数。我们的数据集涵盖的项目数量比之前所有数据集的总和还要多 295 个。
结合我们的新数据集和以前的数据集,我们分析了使用深度学习检测软件漏洞所面临的挑战和有前景的研究方向。我们研究了属于 4 个系列的 11 种模型架构。我们的研究结果表明,由于误报率高、F1 分数低以及难以检测硬 CWE,深度学习在漏洞检测方面还没有做好准备。特别是,我们展示了部署基于深度学习的模型所面临的重要通用化挑战。我们表明,增加训练数据量可能不会进一步提高深度学习模型在漏洞检测方面的性能,但可能有助于提高对未见项目的泛化能力。
我们还确定了充满希望的未来研究方向。我们证明,大型语言模型(LLMs)是基于 ML 的漏洞检测的一个有前途的研究方向,在我们的实验中,其性能优于具有代码结构特征的图形神经网络(GNNs)。此外,开发针对源代码的预 ...
0 Abstract
代码漏洞检测对于软件安全预防至关重要。大规模软件代码中的漏洞注释非常繁琐且具有挑战性,这需要领域专家花费大量时间进行注释。这项工作提供了CPVD,这是一种跨域漏洞检测方法**,基于“学习使用一个具有丰富漏洞标签的项目快速预测另一个项目的漏洞标签”的挑战CPVD使用代码属性图来表示代码,并使用图注意力网络和卷积池网络来提取图特征向量。**在跨域漏洞检测的域自适应表示学习阶段,它减少了源域和目标域数据之间的分布。在本文中,我们在不同的真实世界项目代码上相互测试。与没有域自适应的方法和基于自然语言处理的域自适应方法相比,CPVD更通用,在跨域漏洞检测任务中表现更好。具体而言,对于chr_deb、qemu、libav和sard这四个数据集,它们的F1得分分别为70.2%、81.1%、59.7%和78.1%,AUC分别为88.4%、86.3%、85.2%和88.6%。
代码属性图,跨域漏洞检测,域自适应表示学习,图注意力网络。
1 Intro or Overview
1.1 Problem and Challenge
在代码漏洞检测任务中,VulDeePecker、μVul ...
0 Abstract
许多研究者已开始应用深度学习算法来检测源代码的漏洞。然而,现有方法的检测结果仍然不够准确。大多数这些方法将程序源代码直接视为自然语言。这些方法可能会忽略特定于程序代码的结构信息,而这些信息是代码构成语义的关键部分。在本文中,我们提出了一种名为CEVulDet的新型漏洞检测方法。**首先,我们采用中心性分析来从PDG中去除不重要的节点,以获得保留程序重要部分的新图。其次,我们提出了一种新的程序语义提取方法,该方法获取特征向量以表示程序代码和图边信息的语义信息。它可以借助模型解释技术定位漏洞触发路径。**最后,我们的方法提取的向量被输入到CNN中训练漏洞检测器。在我们的实验中,我们评价了CEVulDet在一个包含33,360个函数的数据集上的性能,其中包括12,303个有漏洞的函数和21,057个无漏洞的函数。实验结果表明,CEVulDet远远优于基于规则的检测器,并超越了最先进的基于深度学习的检测器。CEVulDet在准确率、精确度、召回率和F1指标方面分别提高了3.2%、3.4%、5.1%和4.2%。
1 Intro or Overview
1.1 Problem ...
Devign: Effective Vulnerability Identification by Learning Comprehensive Program Semantics via Graph Neural Networks:NIPS(A) 2019,Yaqin Zhou et al.
0 Abstract
本文提出了Devign模型,一个基于GNN的源代码漏洞检测模型,使用GNN学习丰富的代码语义信息。该模型包括一个Conv模块,其功能是提取有用的特征来进行graph-level的分类。该模型在4个大型开源C项目上进行训练和测试,结果表明Devign明显优于现有技术,平均提高了10.51%的准确率和8.68%的F1值。
1 Intro or Overview
1.1 Problem and Challenge
1.2 Motivation
1.3 Contribution
本文提出了一种基于复合代码表示的图神经网络模型Devign,可以对程序语义信息进行完整的提取,用以各种捕捉漏洞特征。在复合代码表示中,以AST为中心,将不同级别的数据依赖和控制依赖编码为联合图,其中不同类型 ...
0 Abstract
软件漏洞的爆炸性增长对系统安全构成了严重威胁,已成为当今亟待解决的问题之一。然而,现有的漏洞检测方法在达到检测准确性、效率和适用性之间的平衡方面仍然面临局限性。遵循分而治之的策略,本文提出了TrVD(基于抽象语法树分解的漏洞检测器)来揭示源代码片段中隐含的指示语义,以实现准确高效的漏洞检测。为了便于捕捉细微的语义特征,TrVD使用一种新的分解算法将代码片段的AST转换为大小和深度受限的有序子树集。因此,通过精心设计的树结构神经网络,可以有效地收集每个子树的语义。最后,使用Transformer风格的编码器将所有子树的长程上下文语义聚合到一个特定于漏洞的向量中,以表示目标代码片段。在由不同的真实世界和合成漏洞样本组成的五个大型数据集上进行的广泛实验证明了TrVD在检测漏洞存在和确定漏洞类型方面相对于SOTA方法的性能优势。消融研究也证实了TrVD核心设计的有效性。
1 Intro or Overview
1.1 Problem and Challenge
可用性
其他被广泛采用的代码表示包括CFG、PDG和各种基于图形的变体。这些表示更明确地描述了代码元素之间的控制 ...
0 Abstract
包括深度学习(DL)在内的机器学习(ML)的进步使几种方法能够隐式学习易受攻击的代码模式,从而自动检测软件漏洞。最近的一项研究表明,尽管取得了成功,但现有的基于ML/DL的漏洞检测(VD)模型在区分两类漏洞和良性代码方面的能力有限。我们提出了DEEPVD,这是一种基于图的神经网络VD模型,强调漏洞和良性代码之间的类分离特征。DEEPVD在不同的抽象级别上利用了三种类型的类分离功能:**语句类型(类似于词性标记)、后支配树(涵盖常规执行流)和异常流图(涵盖异常和错误处理流)。**我们使用13130种易受攻击的方法,在303个项目的真实世界漏洞数据集中进行了几个实验来评估DEEPVD。我们的研究结果表明,与最先进的基于ML/DL的VD相比,DEEPVD的准确率相对提高了13%–29.6%,召回率为15.6%–28.9%,F评分为16.4%–25.8%。我们的消融研究证实,我们设计的功能和组件有助于DEEPVD实现漏洞和良性代码的高度可分离性。
1 Intro or Overview
1.1 Problem and Challenge
提出了DEEPVD,这是一种基于图 ...
0 Abstract
提出了一个基于混合语义的图神经网络漏洞挖掘系统HyVulDect,该系统基于漏洞的原因构建了一个复合语义代码属性图用于代码表示。使用门控图神经网络来提取深层语义信息。由于大多数漏洞都与数据流相关,我们使用污点分析来提取污点传播链,使用BiLSTM模型来提取上下文的令牌级特征,最后使用分类器对融合特征进行分类。我们引入了一种双重关注机制,使模型能够专注于与漏洞相关的代码,使其更适合于漏洞挖掘任务。实验结果表明,HyVulDect优于现有的最先进的方法,在基准数据集上可以实现92%的准确率。与基于规则的静态挖掘工具Flawfinder、RATS和Cppcheck相比,它具有更好的性能,可以有效地检测实际的CVE源代码漏洞。
1 Intro or Overview
1.1 Problem and Challenge
现有的软件往往是大规模和复杂的,项目的代码量急剧增加。简单使用手动审计代码的成本非常高,而且很难发现触发条件复杂的漏洞。机器学习和深度学习的发展也被广泛用于软件漏洞挖掘。基于传统机器学习的方法需要手动提取漏洞的特征,并依赖于大量的专家知识。基于深度学习方法, ...
0 Abstract
当前基于机器学习的软件漏洞检测方法主要在功能级别进行。然而,这些方法的一个关键限制是,它们没有指示导致漏洞的特定代码行。这限制了开发人员有效检查和解释学习模型预测的能力,这对于将基于机器学习的工具集成到软件开发工作流中至关重要。基于图的模型在功能级漏洞检测方面表现出了良好的性能,但其在语句级漏洞检测中的能力尚未得到广泛探索。**虽然通过可解释的人工智能解释功能级预测是一个很有前途的方向,但我们在这里从完全监督学习的角度来考虑语句级软件漏洞检测任务。**我们提出了一种新的深度学习框架LineVD,它将语句级漏洞检测定义为节点分类任务。**LineVD利用图神经网络和基于转换器的模型对原始源代码标记进行编码,从而利用语句之间的控制和数据依赖性。**特别是,通过解决函数级和语句级信息之间的冲突输出,LineVD显著提高了函数代码在没有漏洞状态的情况下的预测性能。我们针对从多个真实世界项目中获得的大量真实世界C/C++漏洞进行了广泛的实验,并证明F1分数比当前最先进的技术提高了105%.
1 Intro or Overview
1.1 Problem and Challe ...