System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 融合代码漏洞特征及属性图的源代码安全检测方法与装置制造方法及图纸_技高网

融合代码漏洞特征及属性图的源代码安全检测方法与装置制造方法及图纸

技术编号:40487034 阅读:4 留言:0更新日期:2024-02-26 19:19
本发明专利技术公布了一种融合代码漏洞特征及属性图的源代码安全检测方法与装置,通过构建CVE漏洞关键词库,通过对已知软件漏洞库和待检测漏洞程序的特征提取,再进行相似性判断,捕捉程序代码的语义信息,基于注意力机制的GNN构建语义特征学习图神经网络模型以关注带有漏洞特征关键词的代码节点;装置包括CVE漏洞特征关键词库生成模块、代码属性图漏洞特征关键词标记模块、代码结构语义特征提取模块和漏洞检测模块。采用本发明专利技术的技术方案,能够准确地定位漏洞,提高漏洞检测的效率和准确性。

【技术实现步骤摘要】

本专利技术涉及计算机软件,尤其涉及一种融合代码漏洞特征及属性图的源代码安全检测方法与装置


技术介绍

1、代码漏洞是指在软件开发过程中存在的错误、疏忽或缺陷,这些错误可能会导致应用程序出现不可预期的行为,从而影响软件的安全性、可靠性等方面。代码漏洞是软件开发中不可避免的问题,因此需要采取有效的措施进行识别和修复。

2、代码漏洞检测是指在软件开发的过程中,通过对程序代码进行静态分析或动态测试,发现程序中存在的安全漏洞或错误,以便于及时修复并提高软件的安全性和可靠性。目前,自动代码漏洞检测已经成为一种趋势。随着人工智能和机器学习的发展,基于机器学习和深度学习的自动代码漏洞检测方法也逐渐得到了应用。这些方法可以通过学习大量的安全漏洞或错误样本,自动发现和识别安全漏洞或错误,并对程序进行修复或优化。

3、但是,目前基于深度学习漏洞检测技术仍然存在一些不足,例如,特征提取方法难以准确定位漏洞信息位置,以及手动标记漏洞节点复杂问题。通常还需要大规模的训练数据集,其中包含漏洞和正常代码的示例等。这对于多样化的漏洞检测仍然存在挑战,对软件漏洞检测的准确性不高。


技术实现思路

1、针对上述现有技术存在的不足,本专利技术提供一种融合代码漏洞特征及属性图的源代码安全检测方法与装置,能够解决由于已有的程序漏洞检测方法通常需要耗费大量的人工时间和精力来手动识别和修复程序中的漏洞的问题,可以提高对漏洞代码节点的关注,并为漏洞检测提供有效的特征表示,更加有效的捕捉潜在的软件漏洞。

2、本专利技术中,cve :common vulnerabilities&exposures,通用漏洞披露;cpg:codeproperty graph,代码属性图;代码属性图的节点(代码节点)为程序的组成部分,是软件代码中的特定部分或片段,包含有底层语言的可能带有漏洞的函数、方法、变量、控制结构、语句或代码块等。

3、本专利技术通过构建cve漏洞关键词库,结合cpg代码属性图和图神经网络模型(以下简称gnn)技术,通过对已知软件漏洞库和待检测漏洞程序的特征提取,然后进行相似性判断,从而有效捕捉程序代码的语义信息,更加关注带有漏洞特征关键词的代码节点,从而提高图神经网络模型对软件漏洞的检测准确性。

4、本专利技术实施例提供了融合代码漏洞特征及属性图的源代码安全检测方法与装置。该方法包括以下步骤:

5、1)利用软件的漏洞补丁差异构建cve漏洞特征关键词库。

6、基于已有的cve漏洞补丁差异文件和漏洞报告,创建cve漏洞特征关键词库;

7、2)依据cve漏洞特征关键词标记代码属性图。

8、分别生成cve漏洞程序和待检测程序的代码属性图,然后遍历待检测程序的代码属性图,并标记具有cve漏洞特征关键词的代码节点;同时,对cve漏洞程序的代码属性图也进行标记,得到具有标记cve漏洞特征关键词的代码节点;

9、3)提取程序代码结构语义特征。

10、构建基于注意力机制的图神经网络(以下简称gnn)模型,分别对cve漏洞数据库(即cve漏洞程序库,包含计算机安全漏洞信息的数据库)和待检测程序的代码属性图进行语义特征学习,提取得到程序代码结构语义特征;

11、4)基于程序代码结构语义相似度检测漏洞。

12、利用加权余弦相似度计算待检测漏洞程序与已知漏洞程序之间的代码语义特征相似度,并结合相似度阈值动态调整的机制,与实时的漏洞检测情况及特征统计信息进行比较,以判断程序代码是否存在漏洞。

13、步骤1)创建cve漏洞特征关键词库;具体包括:

14、11)首先,从cve漏洞数据库中获取cve漏洞的原始代码和漏洞补丁。利用diff工具比较原始代码和漏洞补丁,生成包含变更内容的差异文件。差异文件包括修改的代码行、具体的代码变更、文件路径、上下文信息等。

15、12)使用diff工具对生成的差异文件进行解析,匹配得到漏洞关键词。漏洞关键词提取过程包括:从差异文件和cve漏洞数据库中的漏洞报告中提取漏洞相关代码块。使用正则表达式匹配不同类型的漏洞关键词,包括函数调用类、变量名类、字符串操作类、指针操作类、算术表达式类等。

16、具体地,针对不同漏洞类型的代码块,使用以下正则表达式模式进行匹配:

17、函数调用类:正则表达式模式:[a-za-z_]\w*\s*\([^)]*\),示例:memcpy(dest,src, size);其中:[a-za-z_]\w*:函数名,由字母、数字和下划线组成。 \s*:函数名后的空格。\([^)]*\):函数的参数列表,用括号括起来,包含多个参数,每个参数之间用逗号分隔。

18、变量名类:正则表达式模式:[a-za-z_]\w*\s*[^=]*\s*=\s*[^;]*,示例:intbuffer_size = 256。其中:[a-za-z_]\w*:变量名,由字母、数字和下划线组成,首字符不能为数字。\s*:变量名后的空格。 [^=]*:等号前的变量值, \s*=\s*:等号前后的空格。[^;]*:等号后的分号。

19、字符串操作类:正则表达式模式:[a-za-z_]\w*\s*\([^)]*\)\s*,示例:strcpy(dest, src)。其中:[a-za-z_]\w*:函数名,由字母、数字和下划线组成。 \s*:函数名后的空格。\([^)]*\):函数的参数列表。 \s*:函数名后的空格。

20、指针操作类:正则表达式模式:[a-za-z_]\w*\s*\*\s*[a-za-z_]\w*\s*;示例:int *ptr;其中:[a-za-z_]\w*:变量名,由字母、数字和下划线组成。\s*:变量名后的空格。\*:指针运算符,表示指向某个变量的指针。\s*:指针运算符后的空格。[a-za-z_]\w*:另一个变量名,由字母、数字和下划线组成。\s*:另一个变量名后的空格。

21、算术表达式类:[a-za-z_]\w*\s*([-+*/])\s*[a-za-z_]\w*(\s*([-+*/])\s*[a-za-z_]\w*)*;示例:result = a * b / c。

22、13)构建漏洞关键词库的结构为三元组形式;

23、对匹配到的漏洞关键词进行去重操作;计算每个漏洞关键词的词频;筛选出词频较高的漏洞关键词;整理和归纳关键词,漏洞特征关键词库的结构为三元组形式:<关键词类型, 关键词, tf(词频)值>。

24、步骤2)依据漏洞特征关键词标记代码属性图。分别生成cve漏洞程序和待检测程序的代码属性图,然后遍历待检测程序的代码属性图,并标记具有cve漏洞关键词库的节点;同时,对cve漏洞程序的代码属性图进行标记;

25、21)对于每个代码节点,使用代码分析工具(joern工具)生成cpg代码属性图,包括ast、cfg、ddg和cdg(包括ast、c本文档来自技高网...

【技术保护点】

1.一种融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,通过构建CVE漏洞关键词库,通过对已知软件漏洞库和待检测漏洞程序的特征提取,再进行相似性判断,捕捉程序代码的语义信息,基于注意力机制的GNN构建语义特征学习图神经网络模型以关注带有漏洞特征关键词的代码节点,从而提高对软件漏洞的检测准确性;包括如下步骤:

2.如权利要求1所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤11)具体是采用Diff工具将原始代码和漏洞补丁进行对比,生成差异文件;差异文件包含修改的代码行、具体的代码变更、文件路径及上下文信息;步骤12)具体是采用Diff解析器,对生成的差异文件进行解析,匹配得到漏洞关键词。

3.如权利要求1所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤2)包括:

4.如权利要求3所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤21)中,代码分析工具具体为Joern工具。

5.如权利要求1所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤3)包括如下过程:

>6.如权利要求5所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,注意力权重表示为:

7.如权利要求5所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤31)的预处理包括:去除无关信息;进行符号化处理;将标识符、变量名、函数名替换为符号;应用Word2Vec工具生成经过符号化处理的代码节点的初始特征向量。

8.如权利要求5所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤41)具体是采用加权余弦相似度计算已知漏洞程序和待检测漏洞程序的语义特征相似度,表示为:

9.一种采用权利要求1所述融合代码漏洞特征及属性图的源代码安全检测方法的装置,其特征是,包括:CVE漏洞特征关键词库生成模块、代码属性图漏洞特征关键词标记模块、代码结构语义特征提取模块和漏洞检测模块;

10.一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,其特征是,该计算机程序被处理器执行时实现权利要求1所述的融合代码漏洞特征及属性图的源代码安全检测方法。

...

【技术特征摘要】

1.一种融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,通过构建cve漏洞关键词库,通过对已知软件漏洞库和待检测漏洞程序的特征提取,再进行相似性判断,捕捉程序代码的语义信息,基于注意力机制的gnn构建语义特征学习图神经网络模型以关注带有漏洞特征关键词的代码节点,从而提高对软件漏洞的检测准确性;包括如下步骤:

2.如权利要求1所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤11)具体是采用diff工具将原始代码和漏洞补丁进行对比,生成差异文件;差异文件包含修改的代码行、具体的代码变更、文件路径及上下文信息;步骤12)具体是采用diff解析器,对生成的差异文件进行解析,匹配得到漏洞关键词。

3.如权利要求1所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤2)包括:

4.如权利要求3所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,步骤21)中,代码分析工具具体为joern工具。

5.如权利要求1所述融合代码漏洞特征及属性图的源代码安全检测方法,其特征是,...

【专利技术属性】
技术研发人员:程超李远金李肖可程泽凯刘高天胡陈勇黄鹂
申请(专利权)人:北京中科卓信软件测评技术中心
类型:发明
国别省市:

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

1