System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于代码属性图学习的代码漏洞检测方法技术_技高网

一种基于代码属性图学习的代码漏洞检测方法技术

技术编号:41493897 阅读:9 留言:0更新日期:2024-05-30 14:39
本发明专利技术提供了一种基于代码属性图学习的代码漏洞检测方法,包括如下步骤:S1、对现有的漏洞数据集进行合并以建立合并数据集;从现实的开源项目中进行数据集收集以建立混合数据集;S2、将抽象语法树、控制流图、数据流图、程序依赖图结合构成代码属性图,从代码属性图中选择两条短路径和两条长路径以覆盖路径特征;S3、建立漏洞检测模型;S4、将特征向量与实际标签进行比较,计算漏洞检测模型的损失值,随后进行反向传播和参数更新来提高漏洞检测模型的性能,输出训练好的漏洞检测模型,采用训练好的漏洞检测模型来预测代码是否有漏洞。本发明专利技术对于改进代码漏洞检测具有重要意义;本发明专利技术提高软件的开发效率和质量,减少软件漏洞。

【技术实现步骤摘要】

本专利技术涉及漏洞检测,具体而言,尤其涉及一种基于代码属性图学习的代码漏洞检测方法


技术介绍

1、随着网络技术的迅猛发展和普及,各种信息系统日益广泛地应用于商业、政府和个人生活中。然而,这些信息系统普遍存在安全漏洞,这些漏洞可能会被不法分子利用,造成严重的数据泄露、系统瘫痪甚至是财产损失。因此,漏洞检测作为防范和应对这些潜在威胁的关键手段,扮演着至关重要的角色。它有助于发现系统中的漏洞,并提供修复建议,从而提升系统的安全性和稳定性。大规模软件代码中的漏洞标注是一项非常繁琐且具有挑战性的工作,需要领域专家花费大量的时间进行标注。因此需要开发自动化的方法来进行漏洞检测,以减轻人工检测的负担。

2、目前已经提出了各种基于深度学习的漏洞检测方法。虽然这些方法在漏洞检测方面显示出巨大的潜力,但在实际应用中仍存在一些不足。第一,在现代信息
中,漏洞检测方法的挑战在于区分与漏洞相关的信息和不相关信息。这一挑战影响着漏洞检测工具捕获代码漏洞特征的有效性和准确性。在软件系统的复杂性和多样性背景下,漏洞检测需要处理大量数据并区分漏洞信号与噪音。漏洞特征往往与代码中的其他异常或错误信息相混淆,这导致了误报和漏报的情况频发。传统漏洞检测方法很难区分与漏洞相关的信息和不相关信息,这阻碍了它们捕获代码漏洞特征的有效性。第二,传统漏洞检测方法在处理长代码时效率较低,因为许多神经网络模型会限制输入长度,这阻碍了它们检测长的易受攻击的代码片段的能力。这种限制阻碍了它们有效检测长代码中可能存在的易受攻击的片段。当代码长度超出模型的处理能力时,这些神经网络往往表现出局限性,导致无法充分捕捉和分析长代码的关键部分。这可能给安全性带来风险,因为某些潜在的安全漏洞或攻击向量可能隐藏在较长的代码片段中。


技术实现思路

1、有鉴于此,本专利技术的目的在于提出一种基于代码属性图学习的代码漏洞检测方法,以解决传统漏洞检测方法很难区分与漏洞相关的信息和不相关信息的技术问题。

2、本专利技术采用的技术手段如下:

3、一种基于代码属性图学习的代码漏洞检测方法,包括如下步骤:

4、s1、对现有的漏洞数据集进行合并以建立合并数据集;从现实的开源项目中进行数据集收集以建立混合数据集;

5、s2、根据合并数据集和混合数据集生成抽象语法树,根据抽象语法树生成控制流图、数据流图、程序依赖图,将抽象语法树、控制流图、数据流图、程序依赖图结合构成代码属性图,通过代码属性图集成所有的语法和依赖语义,从代码属性图中选择两条短路径和两条长路径以覆盖路径特征;

6、s3、建立漏洞检测模型:使用word2vec将两条短路径和两条长路径转化为向量形式,并将转化为向量形式的路径输入到具有k个卷积滤波器的卷积神经网络中来捕获代码缺陷特征并输出其特征向量;

7、s4、将s3输出的特征向量与实际标签进行比较,计算漏洞检测模型的损失值,随后进行反向传播和参数更新来提高漏洞检测模型的性能,输出训练好的漏洞检测模型,采用训练好的漏洞检测模型来预测代码是否有漏洞。

8、进一步地,s1还包括如下步骤:

9、对于合并数据集,将合并数据集中的数据随机分为不相交的训练集、验证集和测试集,训练集占合并数据集的80%,验证集占合并数据集的10%,测试集占合并数据集的10%;为了避免数据重复,使用c/c++词法分析器将合并数据集中的每个样本转换为令牌并删除令牌的注释后,删除重复的测试样本,使每个样本都与一个或多个训练样本相同;

10、对于混合数据集,首先通过选择其消息包含错误相关关键字的提交来提取错误修复提交;然后将修复提交中的安全函数标记为0,将相应的漏洞提交中的漏洞函数标记为1。

11、进一步地,s2中,选取抽象语法树、控制流图、数据流图、程序依赖图中所有类型的边来构成代码属性图,代码属性图中的每个节点都包含一个键、代码语句和属性元素,边表示节点之间的关系;

12、所述代码属性图由二元组g=(v,e)表示,其中v表示代码属性图节点的集合,e表示代码属性图边的集合,从代码属性图中选择两条短路径两条长路径来作为漏洞检测模型输入。

13、进一步地,s3具体包括如下步骤:

14、使用word2vec将四条路径转化为向量形式,设经过word2vec之后的路径序列为矩阵向量e,随后采用卷积神经网络来学习代码的缺陷特征;首先使用具有k个卷积滤波器的卷积神经网络从e中捕获特征,如下所示:

15、

16、其中,⊙表示内积算子,是卷积运算,fj是第j个滤波器;

17、为了捕获最重要的特征,使用最大池化来联合收割机组合所有滤波器的卷积结果,如下所示:

18、c=maxpooling(c1,c2,...,ck)

19、最后,利用mlp分类器执行漏洞检测,如下所示:

20、z=[c||e1||...||em]

21、

22、其中,||表示水平连接操作。

23、进一步地,s4中,训练模型时,通过以下损失来训练分类器:

24、

25、其中,y是真实值,是输出值;

26、通过将特征向量与实际标签进行比较,使用上述损失函数计算漏洞检测模型的损失值,损失值反映了漏洞检测模型预测结果与实际标签之间的差异或误差大小,随后,通过反向传播算法,计算损失函数对漏洞检测模型参数的梯度,根据损失函数的变化情况来调整模型参数,从而最小化损失函数;进行参数更新,根据梯度信息,使用梯度下降法来更新漏洞检测模型的参数,使得损失函数的值减小,漏洞检测模型的性能提高。

27、本专利技术还提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时,执行上述任一项的基于代码属性图学习的代码漏洞检测方法。

28、本专利技术还提供了一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器通过所述计算机程序运行执行上述任一项基于代码属性图学习的代码漏洞检测方法。

29、较现有技术相比,本专利技术具有以下优点:

30、本专利技术提供的技术方案通过基于代码属性图学习来进行漏洞检测,通过代码属性图将代码表示为图形结构,包括抽象语法树,控制流,数据流,程序依赖等元素,并显示它们之间的关系。这种表示形式允许对代码进行更深入和细致的分析,有助于发现隐藏或复杂的漏洞。同时代码属性图提供了对整个代码库的全面视图,可以可视化代码结构、依赖关系和漏洞可能的传播路径。这种全面的视图有助于理解代码中的复杂关系,帮助发现潜在的漏洞影响范围。在实际工作中,可以将本专利技术提供的技术方案应用于代码漏洞检测。主要的优点有:1、节约了无数的时间和人力成本;2、对于改进代码漏洞检测具有重要意义;3、提高软件的开发效率和质量,减少软件漏洞。

本文档来自技高网...

【技术保护点】

1.一种基于代码属性图学习的代码漏洞检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的基于代码属性图学习的代码漏洞检测方法,其特征在于,S1还包括如下步骤:

3.根据权利要求1所述的基于代码属性图学习的代码漏洞检测方法,其特征在于,S2中,选取抽象语法树、控制流图、数据流图、程序依赖图中所有类型的边来构成代码属性图,代码属性图中的每个节点都包含一个键、代码语句和属性元素,边表示节点之间的关系;

4.根据权利要求1所述的基于代码属性图学习的代码漏洞检测方法,其特征在于,S3具体包括如下步骤:

5.根据权利要求1所述的基于代码属性图学习的代码漏洞检测方法,其特征在于,S4中,训练模型时,通过以下损失来训练分类器:

6.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时,执行所述权利要求1至5中任一项权利要求所述的基于代码属性图学习的代码漏洞检测方法。

7.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序运行执行所述权利要求1至5中任一项权利要求所述的基于代码属性图学习的代码漏洞检测方法。

...

【技术特征摘要】

1.一种基于代码属性图学习的代码漏洞检测方法,其特征在于,包括如下步骤:

2.根据权利要求1所述的基于代码属性图学习的代码漏洞检测方法,其特征在于,s1还包括如下步骤:

3.根据权利要求1所述的基于代码属性图学习的代码漏洞检测方法,其特征在于,s2中,选取抽象语法树、控制流图、数据流图、程序依赖图中所有类型的边来构成代码属性图,代码属性图中的每个节点都包含一个键、代码语句和属性元素,边表示节点之间的关系;

4.根据权利要求1所述的基于代码属性图学习的代码漏洞检测方法,其特征在于,s3具体包括如下步骤:...

【专利技术属性】
技术研发人员:李辉赵凌霄郭世凯雷雅彬李晓晨江贺
申请(专利权)人:大连海事大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1