1.一种基于自注意力机制的工业软件漏洞检测方法,其特征在于,该方法采用自注意力机制对工业软件漏洞进行检测,检测过程分为代码预处理过程和漏洞检测模型训练测试过程:
所述的代码预处理过程的步骤为:
S11、根据数据库漏洞程序,提取API函数调用和程序片段,将API函数分为5类漏洞问题构建成工业软件漏洞的漏洞库,以漏洞库的关键点作为程序切片的切入点,提取出代码中与关键点有关的参数、语句和表达式;
S12、利用切片工具对漏洞库的关键点进行切片,获得切片后的程序,然后将切片后的程序组装成行关联代码,对行关联代码进行数据处理,并将行关联代码转换成对应的向量,获得特征向量;
S13、将特征向量统一处理为相同长度的向量,当行关联代码向量长度不足时,则在向量后补0,当行关联代码向量长度超过设置的长度时,超过的部分删除;
所述的代码漏洞检测模型训练和测试过程为:S21、训练过程采用批量抽取的方式从训练样本中每次抽取固定个数的样本,传入到采用自注意力机制的代码漏洞检测模型中,获得预测结果;
S22、将预测结果与真实结果的误差通过反向传播及梯度下降算法进行参数更新,通过多次迭代训练模型;
S23、测试过程使用训练过的模型进行测试,对比模型测试结果与实际结果是否相同,测试模型的检测能力。
2.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述数据库采用NIST的漏洞数据库的源代码,包含软件产品中漏洞的NVD和学术安全漏洞的SARD,随机选择80%的程序作为训练程序,20%的作为测试程序。
3.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述5类漏洞问题分别为缓冲区溢出问题、空指针引用问题、堆溢出问题、API误用和信息泄露问题。
4.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述切片包含前向切片和后向切片,其中前向切片对应于受相关参数影响的语句,而后向切片对应于可影响相关参数的语句,利用数据依赖图,来提取这两种切片。
5.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述行关联代码为语义上相互关联的代码行。
6.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述数据处理主要是对行关联代码添加标签,包含漏洞的标签设为1,不包含漏洞的标签设为
0,对行关联代码做分词处理和去重处理以及针对数据样本不均衡问题为样本赋予不同的权重。
7.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述将行关联代码数据转换成对应的向量采用基于层序softmax的word2vec的跳字模型。
8.根据权利要求1所述的基于自注意力机制的工业软件漏洞检测方法,其特征在于,所述代码漏洞检测模型为采用自注意力机制的D_transformer模型,其网络结构采用encoder‑decoder架构,内部的encoder和decoder的各包含一个自注意力机制层和一个前馈神经网络。