System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于三地址码和神经网络的代码漏洞检测方法和系统技术方案_技高网

一种基于三地址码和神经网络的代码漏洞检测方法和系统技术方案

技术编号:40435097 阅读:11 留言:0更新日期:2024-02-22 23:00
本发明专利技术涉及网络安全技术领域,具体公开了一种基于三地址码和神经网络的代码漏洞检测方法和系统,其中,该方法包括:将源代码转换为三地址码,并将三地址码中每个语句的语义信息转换为实数空间中的n维向量;利用傅里叶变换公式将n维向量从代码域转变至频域进行特征变换以获取频域特征向量;将频域特征向量输入至神经网络模型中进行训练,判断源代码中是否存在漏洞,以漏洞检测的二分类结果作为输出结果;其中,神经网络模型包括卷积神经网络层、双向长短期记忆网络层、自注意力机制层和全连接层。本申请与传统静态分析漏洞检测方法相比,准确度有较大提升,进一步提高了漏洞检测效果,从而有效的提高了易受攻击代码与安全代码的分类。

【技术实现步骤摘要】

本专利技术涉及网络安全,具体涉及一种基于三地址码和神经网络的代码漏洞检测方法和系统


技术介绍

1、漏洞检测是软件安全领域的一个重要问题。随着软件技术的不断发展和相关产品功能的日益复杂化,漏洞数量与日俱增,许多具有安全隐患的代码不可避免的被恶意攻击者所利用,这不仅给普通用户带来了极大的困扰,对公司或国家也造成了巨大的财产损失和安全威胁。

2、由于漏洞的客观存在,一种相对优异的漏洞检测方法是很有必要的。作为技术人员与机器直接进行交互的代码层面,人类思想的局限性和一时疏忽往往会导致漏洞的产生。因此,对源代码进行深入分析有助于发现一些潜在漏洞的位置和特征。早期传统的源代码漏洞检测技术严重依赖于审查人员自身的相关知识和长期工作带来的经验,这种方法过于主观,并且对审查人员的门槛要求较高,在代码规模爆炸式增长的今天,已无法满足客观需求。近年来,通过机器学习自动进行漏洞分类识别已成为网络安全领域学术界研究的新焦点与热点。基于机器学习的漏洞检测技术将检测能力的高低与审查人员自身水平相分离,避免了过度依赖专家经验的问题,但仍需要提前进行定义,然后采用机器学习的方式将预处理后的源代码序列进行漏洞识别与分类。

3、随着深度学习技术的发展,许多深度神经网络被提出,研究人员通过不断的调整神经网络的权重,来学习代码中的关键特征,从而判别出代码有无潜在安全漏洞。目前已有多种深度学习模型应用于源代码漏洞检测领域,针对开放源代码的软件漏洞检测领域,传统静态分析手段往往需要对代码进行大量建模。

4、因此,如何解决现有技术中过度依赖专家经验的问题,是本领域技术人员亟待解决的技术问题。


技术实现思路

1、为解决过度依赖专家经验的问题,将机器学习技术引入静态分析,并选择合适的学习模型来学习代码特征,本申请提供了一种基于三地址码和神经网络的代码漏洞检测方法,包括:

2、步骤s1:将源代码转换为三地址码,并将所述三地址码中每个语句的语义信息转换为实数空间中的n维向量;

3、步骤s2:利用傅里叶变换公式将所述n维向量从代码域转变至频域进行特征变换以获取频域特征向量;

4、步骤s3:将所述频域特征向量输入至神经网络模型中进行训练,判断所述源代码中是否存在漏洞,以漏洞检测的二分类结果作为输出结果;

5、其中,所述神经网络模型包括卷积神经网络层、双向长短期记忆网络层、自注意力机制层和全连接层。

6、在其中一些具体实施例中,所述步骤s1还包括:

7、步骤s11:对所述源代码进行预处理;

8、步骤s12:使用源规范化转换技术将提取的调用函数变换为三地址码以消除代码中的噪音;

9、步骤s13:使用词嵌入技术中的skip-gram模型,将所述三地址码中每个语句的语义信息转换为实数空间中的n维向量。

10、在其中一些具体实施例中,在步骤s2中,所述傅里叶变换公式如下式所示:

11、;

12、式中, n为代码域特征向量的索引, k为频域特征向量的索引, j为虚数单位, n为特征向量长度, x(k)为周期为 n的周期序列的主值序列,即得到的频域特征向量, x n为代码域特征向量。

13、在其中一些具体实施例中,所述步骤s3还包括:

14、步骤s31:利用卷积神经网络层将频域特征向量进行卷积操作提取特征;

15、步骤s32:将所述特征输入双向长短期记忆网络层进一步进行特征处理;

16、步骤s33:利用自注意力机制层提取上下文信息的特征与剔除冗余特征;

17、步骤s34:利用全连接层判断输入序列中是否存在漏洞,以漏洞检测的二分类结果作为输出。

18、在其中一些具体实施例中,在步骤s3中,根据均方误差损失函数进行反向传播,用于计算神经网络模型预测值和真实值之间的误差。

19、为实现同一专利技术目的,本申请还提供了一种基于三地址码和神经网络的代码漏洞检测系统,包括:

20、代码转换模块:用于将源代码转换为三地址码,并将所述三地址码中每个语句的语义信息转换为实数空间中的n维向量;

21、向量变换模块:用于利用傅里叶变换公式将所述n维向量从代码域转变至频域进行特征变换以获取频域特征向量;

22、结果输出模块:用于将所述频域特征向量输入至神经网络模型中进行训练,判断所述源代码中是否存在漏洞,以漏洞检测的二分类结果作为输出结果;

23、其中,所述神经网络模型包括卷积神经网络层、双向长短期记忆网络层、自注意力机制层和全连接层。

24、在其中一些具体实施例中,所述代码转换模块还用于:

25、预处理单元:用于对所述源代码进行预处理;

26、噪音消除单元:用于使用源规范化转换技术将提取的调用函数变换为三地址码以消除代码中的噪音;

27、向量转换单元:用于使用词嵌入技术中的skip-gram模型,将所述三地址码中每个语句的语义信息转换为实数空间中的n维向量。

28、在其中一些具体实施例中,在向量变换模块中,所述傅里叶变换公式如下式所示:

29、;

30、式中, n为代码域特征向量的索引, k为频域特征向量的索引, j为虚数单位, n为特征向量长度, x(k)为周期为 n的周期序列的主值序列,即得到的频域特征向量, x n为代码域特征向量。

31、在其中一些具体实施例中,所述结果输出模块还用于:

32、特征提取单元:用于利用卷积神经网络层将频域特征向量进行卷积操作提取特征;

33、特征处理单元:用于将所述特征输入双向长短期记忆网络层进一步进行特征处理;

34、特征剔除单元:用于利用自注意力机制层提取上下文信息的特征与剔除冗余特征;

35、结果输出单元:用于利用全连接层判断输入序列中是否存在漏洞,以漏洞检测的二分类结果作为输出。

36、在其中一些具体实施例中,在结果输出模块中,根据均方误差损失函数进行反向传播,用于计算神经网络模型预测值和真实值之间的误差。

37、上述技术方案的有益效果:

38、本申请提供的一种基于三地址码和神经网络的代码漏洞检测方法和系统通过将源代码转换为三地址码来消除无用信息,并利用离散傅里叶变换方法提取其中有用特征,然后将提取特征输送至神本文档来自技高网...

【技术保护点】

1.一种基于三地址码和神经网络的代码漏洞检测方法,其特征在于,包括:

2.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,所述步骤S1还包括:

3.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,在步骤S2中,所述傅里叶变换公式如下式所示:

4.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,所述步骤S3还包括:

5.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,在步骤S3中,根据均方误差损失函数进行反向传播,用于计算神经网络模型预测值和真实值之间的误差。

6.一种基于三地址码和神经网络的代码漏洞检测系统,其特征在于,包括:

7.根据权利要求6所述的基于三地址码和神经网络的代码漏洞检测系统,其特征在于,所述代码转换模块还用于:

8.根据权利要求6所述的基于三地址码和神经网络的代码漏洞检测系统,其特征在于,在向量变换模块中,所述傅里叶变换公式如下式所示:

9.根据权利要求6所述的基于三地址码和神经网络的代码漏洞检测系统,其特征在于,所述结果输出模块还用于:

10.根据权利要求6所述的基于三地址码和神经网络的代码漏洞检测系统,其特征在于,在结果输出模块中,根据均方误差损失函数进行反向传播,用于计算神经网络模型预测值和真实值之间的误差。

...

【技术特征摘要】

1.一种基于三地址码和神经网络的代码漏洞检测方法,其特征在于,包括:

2.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,所述步骤s1还包括:

3.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,在步骤s2中,所述傅里叶变换公式如下式所示:

4.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,所述步骤s3还包括:

5.根据权利要求1所述的基于三地址码和神经网络的代码漏洞检测方法,其特征在于,在步骤s3中,根据均方误差损失函数进行反向传播,用于计算神经网络模型预测值和真实值之间的误差。

6...

【专利技术属性】
技术研发人员:曾庆尧吴忠望熊达鹏王宇钱克昌苏英豪张云帆万颖
申请(专利权)人:中国人民解放军战略支援部队航天工程大学
类型:发明
国别省市:

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

1