当前位置: 首页 > 专利查询>燕山大学专利>正文

基于自注意力机制的工业软件漏洞检测方法技术

技术编号:30645049 阅读:14 留言:0更新日期:2021-11-04 00:50
本发明专利技术公开了一种基于自注意力机制的工业软件漏洞检测方法,该方法采用自注意力机制对软件漏洞进行检测,检测过程分为代码预处理过程和漏洞检测模型训练测试过程;首先获取数据库漏洞程序,提取库API函数调用和程序片段,分为5类漏洞问题构建成工业软件漏洞的漏洞库,然后对漏洞库的关键点进行切片,将切片后的程序组装成行关联代码并进行数据处理,之后将行关联代码转换成对应的向量获得特征向量,并处理成相同长度大小;将特征向量与位置编码向量相加作为漏洞检测模型的输入,然后训练D_transformer神经网络,将训练好的模型通过测试样本验证模型的检测能力。本发明专利技术方法进一步提高了检测分类精度,降低了漏报率。降低了漏报率。降低了漏报率。

【技术实现步骤摘要】
基于自注意力机制的工业软件漏洞检测方法


[0001]本专利技术涉及网络安全
,特别涉及一种基于自注意力机制的工业软件漏洞检测方法。

技术介绍

[0002]随着各行业软件开发技术的不断发展,工业软件也应运而生,工业软件作为工业互联网应用体系的重要组成部分,是为满足特定需求的工业应用软件,可以将人的工作从枯燥、重复的体力劳动中解放出来,专注于更具价值的知识创造性工作,并可低成本享受先进的软硬件技术,提升企业生产效率,通过规模化的复用,进一步提升行业的智能制造水平。在工业软件为工业技术人员提供便利的同时,工业软件漏洞问题也成为软件开发者们不可忽视的重要问题,在工业互联网环境中,一旦软件连接了系统,如果软件出现漏洞问题,机器和设备就可能会遭到攻击,生产过程会受到破坏和干扰,甚至停止。因此,越及时检测出软件中潜在的漏洞问题,生产过程中产生的财产和安全损失也越小。传统的静态检测方法的误报率较高,动态检测方法容易产生漏报并且比较耗时。近几年来随着深度学习技术的发展,深度学习在很多领域取得了惊人的成就,深度学习能够学习具有更复杂和抽象的高级特征表示,能够自动学习更可概括的潜在特征或表示,并且提供灵活性,允许针对不同的应用场景定制网络结构,利用深度学习技术从大量代码中学习软件漏洞模式成为了可能。
[0003]卷积神经网络在计算机视觉方面对图片能够较好地获得更细粒化的特征,用来学习结构化的空间数据,对于单词或句子,它只能捕捉单词的上下文含义,因此应用卷积神经网络只能学习上下文的简单代码语义。循环神经网络在自然语言处理方向取得了令人惊叹的成果,它用于处理顺序数据,尤其是循环神经网络的双向形式能够捕获序列的长期依赖关系,因此许多研究使用双向长短时记忆网络和门控递归单元结构来学习代码上下文依赖关系。常用的深度学习模型还应用了注意力机制,只选择一些关键的信息输入进行处理,即对输入序列中不同时刻分配不同的注意力,来提高神经网络的效率,这对于理解许多类型的漏洞的语义至关重要。

技术实现思路

[0004]本专利技术的目的是进一步提高软件漏洞检测的精度和效率,同时还能在网络环境发生变化时表现出一定的自适应能力,提高对未知漏洞的检测能力,建立一个更为完善和全面的检测模型,从而改善软件漏洞的检测效果。本专利技术提供一种基于自注意力机制的工业软件漏洞检测方法,旨在提高检测性能。
[0005]为了解决上述存在的技术问题,实现专利技术目的,本专利技术是通过以下技术方案实现的:一种基于自注意力机制的工业软件漏洞检测方法,该方法采用自注意力机制对工业软件漏洞进行检测,检测过程分为代码预处理过程和漏洞检测模型训练测试过程:
[0006]所述的代码预处理过程的步骤为:
[0007]S11、首先根据数据库漏洞程序,提取API函数调用和程序片段,将API函数分为5类漏洞问题构建成工业软件漏洞的漏洞库,以漏洞库的关键点作为程序切片的切入点,提取出代码中与关键点有关的参数、语句和表达式;S12、利用切片工具对漏洞库的关键点进行切片,获得切片后的程序,然后将切片后的程序组装成行关联代码,对行关联代码进行数据处理,并将行关联代码转换成对应的向量,获得特征向量;S13、将特征向量统一处理为相同长度的向量,当行关联代码向量长度不足设置的长度时,则在向量最后补0,当行关联代码向量长度超过设置的长度时,超过的部分删除;
[0008]所述的代码漏洞检测模型训练和测试过程为:
[0009]S21、训练过程采用批量抽取的方式从训练样本中每次抽取固定个数的样本,传入到采用自注意力机制的代码漏洞检测模型中,获得预测结果;S22、将预测结果与真实结果的误差通过反向传播及梯度下降算法进行参数更新,通过多次迭代训练模型;S23、测试过程使用训练过的模型进行测试,对比模型测试结果与实际结果是否相同,测试模型的检测能力。
[0010]优选地,所述数据库采用NIST的漏洞数据库的源代码,包含软件产品中漏洞的NVD和学术安全漏洞的SARD,随机选择80%的程序作为训练程序,20%的作为测试程序。
[0011]优选地,所述5类漏洞问题分别为缓冲区溢出问题、空指针引用问题、堆溢出问题、API误用和信息泄露问题。
[0012]优选地,所述切片包含前向切片和后向切片,其中前向切片对应于受相关参数影响的语句,而后向切片对应于可影响相关参数的语句,利用数据依赖图,来提取这两种切片。
[0013]优选地,行关联代码为语义上相互关联的代码行。
[0014]优选地,所述数据处理主要是对行关联代码添加标签,包含漏洞的标签设为1,不包含漏洞的标签设为0,对行关联代码做分词处理和去重处理以及针对数据样本不均衡问题为样本赋予不同的权重。
[0015]优选地,所述将行关联代码数据转换成对应的向量采用基于层序softmax的word2vec的跳字模型。
[0016]优选地,所述代码漏洞检测模型为采用自注意力机制的D_transformer模型,其网络结构采用encoder

decoder架构,内部的encoder和decoder的各包含一个自注意力机制层和一个前馈神经网络。
[0017]与现有技术相比,本专利技术具有以下有益效果:
[0018](1)本专利技术方法采用自注意力机制,对于长句子,对每个输入项分配的权重取决于输入项之间的相互作用,不会存在长期依赖问题,它能帮助当前节点不仅仅只关注当前的词,从而能获取到上下文的语义;
[0019](2)本专利技术采用多头注意力机制,提高了模型的拟合能力;
[0020](3)本专利技术使用D_transformer模型,可以同时接受所有的向量作为输入,具有并行计算的优势,因此训练速度更快,使用较深的模型,较深的模型相比于较浅的模型可以收敛于较低的测试误差,所以该模型可以获得更高的精度,使得漏洞检测方法更好的满足工程实际要求。
附图说明
[0021]图1是本专利技术所提方法的流程图;
[0022]图2是本专利技术的代码预处理流程图;
[0023]图3是本专利技术代码漏洞检测模型训练和测试流程图;
[0024]图4是本专利技术D_transformer模型的网络结构图;
[0025]图5是本专利技术encoder和decoder的内部简版结构图;
[0026]图6是本专利技术D_transformer的详细结构图。
具体实施方式
[0027]下面将结合本专利技术实施例中附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部实施例。通常在此处附图中描述和展示出的本专利技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本专利技术实施例的详细描述并非旨在限制本专利技术要求保护的范围,而是仅仅表示本专利技术的选定实施例。基于本专利技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的其他所有实施例,都属于本专利技术保护的范围。
[0028]下面结合附图与具体实施方式对本专利技术做更为详细的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于自注意力机制的工业软件漏洞检测方法,其特征在于,该方法采用自注意力机制对工业软件漏洞进行检测,检测过程分为代码预处理过程和漏洞检测模型训练测试过程:所述的代码预处理过程的步骤为:S11、根据数据库漏洞程序,提取API函数调用和程序片段,将API函数分为5类漏洞问题构建成工业软件漏洞的漏洞库,以漏洞库的关键点作为程序切片的切入点,提取出代码中与关键点有关的参数、语句和表达式;S12、利用切片工具对漏洞库的关键点进行切片,获得切片后的程序,然后将切片后的程序组装成行关联代码,对行关联代码进行数据处理,并将行关联代码转换成对应的向量,获得特征向量;S13、将特征向量统一处理为相同长度的向量,当行关联代码向量长度不足时,则在向量后补0,当行关联代码向量长度超过设置的长度时,超过的部分删除;所述的代码漏洞检测模型训练和测试过程为:S21、训练过程采用批量抽取的方式从训练样本中每次抽取固定个数的样本,传入到采用自注意力机制的代码漏洞检测模型中,获得预测结果;S22、将预测结果与真实结果的误差通过反向传播及梯度下降算法进行参数更新,通过多次迭代训练模型;S23、测试过程使用训练过的模型进行测试,对比模型测试结果与实际结果是否相同,测试模型的检测能力。2.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述数据库采用NIST的漏洞数据库的源代码,包含软件产品中漏洞的NVD和学术安全漏洞的SARD,随机选择80%的程序作为训练程序,...

【专利技术属性】
技术研发人员:张立国薛静芳金梅李佳庆秦芊王磊申前孟子杰耿星硕黄文汉
申请(专利权)人:燕山大学
类型:发明
国别省市:

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

1