System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种具有可解释性的源代码漏洞检测方法及系统技术方案_技高网

一种具有可解释性的源代码漏洞检测方法及系统技术方案

技术编号:40710319 阅读:3 留言:0更新日期:2024-03-22 11:11
本发明专利技术公开了网络安全检测技术领域的一种具有可解释性的源代码漏洞检测方法及系统,旨在解决现有漏洞检测技术无法精确定位漏洞具体位置以及解释漏洞成因的技术问题。其漏洞检测方法包括:采集原始源代码和注释,通过预构建的unixcoder模型进行预处理以获取语义信息和结构信息;使用一对一映射函数将语义信息转化为序列化结构,并保留抽象语法树中的结构信息;将序列化结构输入至预构建的Transformer模型中进行训练,引入自注意力机制计算漏洞的风险得分,进行行级漏洞定位,并利用注意力热图找出漏洞区域,获得具有可解释性的漏洞检测结果。本发明专利技术应用于软件开发和网络安全领域,能够提高漏洞检测的准确性和可解释性,有效预防数据泄露、系统崩溃等安全风险。

【技术实现步骤摘要】

本专利技术涉及一种具有可解释性的源代码漏洞检测方法及系统,属于网络安全检测。


技术介绍

1、由于互联网人口规模的急速膨胀以及计算机软件的广泛使用,程序代码中的漏洞造成的危害越发广泛和严重,尽管在追求安全编码等方面投入了大量努力,但软件漏洞仍然是一个严重的问题,因此一些涉及机器学习、人工智能、自然语言处理等领域的自动化技术,有望为企业和组织提供更高效、安全的服务。然而,用于检测漏洞的现有解决方案仍存在不足。

2、随着开源代码库的增加,多种机器学习技术被应用于学习代码易受攻击的特征,词袋和分类算法的准确性相当低,因为它们无法捕捉源代码的顺序性和语义结构,而更先进的基于深度神经网络的方法不能定位漏洞的具体位置。

3、随着当代软件规模和复杂度的增加,以及潜在攻击数量的增加,手动检测源代码的漏洞几乎不可能,必须借助自动化技术支持漏洞检测到,目前常见的细粒度漏洞检测方法在可解释方面只能做到解释子图对预测的贡献,无法对子图内部的代码进行细粒度解释,且解释结果受到选择的节点和边的影响,其结果具有一定的主观性和不确定性。


技术实现思路

1、本专利技术的目的在于克服现有技术中的不足,提供一种具有可解释性的源代码漏洞检测方法及系统,解决软件中存在的安全隐患,防止被恶意攻击者利用,造成数据泄露、系统崩溃或其他损失,同时提升检测的准确性。

2、为达到上述目的,本专利技术是采用下述技术方案实现的:

3、第一方面,本专利技术提供了一种具有可解释性的源代码漏洞检测方法,其特征在于,包括:

4、采集原始的源代码和注释,并输入至预构建的unixcoder模型中进行预处理,获得语义信息和结构信息;

5、采用一对一映射函数将所述语义信息转化为序列化结构,同时保留抽象语法树中的结构信息;

6、将所述序列化结构输入至预构建的transformer模型中进行训练,并对所述transformer模型进行评估,经评估完成后输出编码向量,再采用softmax函数对所述编码向量进行函数级漏洞预测,获得预测后的序列化结构数据;

7、在transformer模型中引入自注意力机制,计算所述漏洞的风险得分,根据所述风险得分进行行级漏洞定位,获得行的风险得分;

8、利用transformer模型中的自注意力机制中生成的注意力热图,找出漏洞的区域,结合所述行的风险得分,获得具有可解释性的漏洞检测结果。

9、结合第一方面,进一步地,所述transformer模型包括至少一个编码器,每个编码器包括双向多头自注意力机制和完全连接的前馈神经网络,其表达式如下:

10、zl=ln(multiattn(hl-1)+hl-1)

11、hl=ln(ffn(zl)+zl)

12、其中,multiattn表示为双向多头自注意力机制;ffn表示为两层前向反馈网络;ln表示为横向规范化操作;hl表示为前向反馈网络中第一层的输出表示;zl表示为第一层自注意力机制的输出,作为ffn的输入。

13、结合第一方面,进一步地,所述双向多头自注意力机制的表达式如下:

14、

15、

16、

17、其中,hl-1表示为前向反馈网络前一层的输出;m表示为掩码矩阵;表示为transformer模型参数;head i表示为掩蔽注意力函数;qi表示为查询(query)矩阵的输入;ki表示为值(value)矩阵的输入;vi表示为值(value)矩阵的输入;multihead(q,k,v)表示为多头注意力机制的输出;wlo表示为将所有注意力头连接后再次变换的输出权重矩阵。

18、结合第一方面,进一步地,所述序列化结构输入至预构建的transformer模型中进行训练,包括:

19、初始化transformer模型的参数,所述transformer模型的参数包括学习率、注意力头以及其它transformer架构相关的参数;

20、利用adam优化器对所述序列化结构进行权重更新,并根据所述预设的学习率进行调整,获得最新的序列化结构;

21、根据最新的序列化结构评估transformer模型的参数性能,待评估完成后输出编码向量;

22、所述编码向量送至softmax层进行函数级漏洞预测,获得预测后的序列化结构数据,将所述序列化结构数据输入至预构建的roberta模型中,输出二进制的序列化结构数据,并对所述二进制的序列化结构数据进行分类,用于识别和标记源代码中潜在的漏洞。

23、结合第一方面,进一步地,所述transformer模型的参数性能包括:准确率、召回率和f1分数。

24、结合第一方面,进一步地,所述评估transformer模型的参数性能的过程如下:

25、将所述最新的二进制的序列化结构数据划分成训练集、验证集和测试集;

26、对所述验证集进行预处理操作,获得当前transformer模型在验证集上的表现,将所述当前transformer模型在验证集上的表现与先前transformer模型在验证集上的表现进行比较,选取出transformer模型在验证集上的最佳表现,并将最佳表现的transformer模型保存。

27、结合第一方面,进一步地,所述计算漏洞的风险得分过程如下:

28、在所述序列化结构数据中提取出易受攻击的代码;即利用分类结果,识别并标记那些具有潜在安全风险的代码段;

29、利用双向多头自注意力机制计算所述易受攻击的代码的自注意力分,并将所有自注意力分进行累加,获得整体的风险得分。

30、结合第一方面,进一步地,所述具有可解释性的漏洞检测结果过程包括:

31、对所述易受攻击的代码进行分割,划分成多个子列表,计算出每个子列表的风险得分,将所述子列表的风险得分按照降序进行排列,获得行的风险得分;

32、对所述注意力热图进行解析,划分出需要检测的区域,结合所述获取的行的风险得分,找出对应的代码行或代码块。

33、第二方面,一种具有可解释性的源代码漏洞检测系统,包括:

34、数据预处理模块,用于采集原始的源代码和注释,并输入至预构建的unixcoder模型中进行预处理,获得语义信息和结构信息;

35、结构转化模块,用于采用一对一映射函数将所述语义信息转化为序列化结构,同时保留抽象语法树中的结构信息;

36、训练评估模块,用于将所述序列化结构输入至预构建的transformer模型中进行训练,并对所述transformer模型进行评估,经评估完成后输出编码向量,再采用softmax函数对所述编码向量进行函数级漏洞预测,获得预测后的序列化结构数据;

37、行级漏洞定位模块,在transformer模型中引入自注意力机制,计算所述漏洞的风险得分,根据所述风险得分进行行级漏洞定位,获得行的本文档来自技高网...

【技术保护点】

1.一种具有可解释性的源代码漏洞检测方法,其特征在于,包括:

2.根据权利要求1所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述Transformer模型包括至少一个编码器,每个编码器包括双向多头自注意力机制和完全连接的前馈神经网络,其表达式如下:

3.根据权利要求2所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述双向多头自注意力机制的表达式如下:

4.根据权利要求1所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述序列化结构输入至预构建的Transformer模型中进行训练,包括:

5.根据权利要求4所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述Transformer模型的参数性能包括:准确率、召回率和F1分数。

6.根据权利要求4所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述评估Transformer模型的参数性能的过程如下:

7.根据权利要求1至4任意一项所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述计算漏洞的风险得分过程如下:

8.根据权利要求7所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述具有可解释性的漏洞检测结果过程包括:

9.一种具有可解释性的源代码漏洞检测系统,其特征在于,包括:

...

【技术特征摘要】

1.一种具有可解释性的源代码漏洞检测方法,其特征在于,包括:

2.根据权利要求1所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述transformer模型包括至少一个编码器,每个编码器包括双向多头自注意力机制和完全连接的前馈神经网络,其表达式如下:

3.根据权利要求2所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述双向多头自注意力机制的表达式如下:

4.根据权利要求1所述的具有可解释性的源代码漏洞检测方法,其特征在于,所述序列化结构输入至预构建的transformer模型中进行训练,包括:

5.根据权利要求4所述的...

【专利技术属性】
技术研发人员:孙乐李慧赟瞿治国
申请(专利权)人:南京信息工程大学
类型:发明
国别省市:

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

1