一种基于BiGRU和attention机制的软件缺陷检测方法技术

技术编号:31630047 阅读:15 留言:0更新日期:2021-12-29 19:08
本发明专利技术涉及一种基于BiGRU和attention机制的软件缺陷检测方法,包括:获取软件代码并对其进行分段量化预处理,得到向量集;将所述向量集输入预设的软件缺陷检测模型,模型包括输入层、BiGRU层、Attention层、Dense层和Softmax层,在大量样本训练后能够输出缺陷类型及其概率。BiGRU能够学习到漏洞代码数据集中更多的特征,而且消耗的计算资源和时间等代价都较低,为了避免提取的特征过多而防止出现过拟合情况的出现,引入Attention机制能让模型对重要信息重点关注,忽略或弱化非关键信息,本发明专利技术网络模型具有很强的鲁棒性和可靠性。性。性。

【技术实现步骤摘要】
一种基于BiGRU和attention机制的软件缺陷检测方法


[0001]本专利技术涉及软件漏洞检测
,尤其涉及一种基于BiGRU和 attention机制的软件缺陷检测方法。

技术介绍

[0002]软件缺陷是指存在某种软件功能或者软件应用程序方面的缺陷 以及漏洞等。软件缺陷会引发软件运行时出现一些非预期的结果,非 但不能完成预期的功能,反而会出现意料之外的后果。这种预期之外 的行为轻则会损害程序的预期功能,重则会导致程序崩溃而不能正常 运行,更为严重的情况下,可能会被恶意攻击者利用,产生安全隐患。 因此,软件缺陷检测是保证软件产品质量的基本手段,特别是软件使 用量较大的场合,比如在电网中web or mobile application种类和 数量都非常庞大,为避免电网受到恶意攻击,对软件缺陷检测显得十 分必要。
[0003]当前针对软件的漏洞检测问题,传统的解决方案大多是依赖人工 知识经验对其进行标注和分类,这种方法的优点是能够有效检测出关 注度较高的漏洞,但是对关注度不是很高的漏洞的漏报率和误报率比 较高。由于软件缺陷是代码缺陷被利用形成的,直观上认为,分析代 码可以获取最多的软件缺陷相关信息,即软件缺陷检测的能力与分析 代码数据的能力紧密相关,而机器学习方法和深度学习方法非常适合 于从海量数据中发现和学习规律,因此,现有的解决方案是基于软件 缺陷代码数据集,采用深度学习的方法来训练软件漏洞识别模型,这 种方法是减少了对人工知识经验的依赖,但是模型的准确率和F1Score普遍不高,在实际生产环境中没有显著的提升软件缺陷检测的 效率。
[0004]比如:Li Z,Zou D,Xu S等人选择LSTM进行软件缺陷检测。由 于程序函数调用的参数可能受到程序中较早的语句影响,也有可能受 到较晚的语句影响,单向LSTM可能还不能完全解决此问题,因此使 用双向LSTM(BiLSTM)进行软件缺陷检测。但是由于数据流分析工具 的不完善,数据预处理会同时将切片代码标注为0或者1,导致BiLSTM 方法的一个不足之处是:LSTM(BiLSTM)一定程度上解决了RNN存在的 梯度问题,但显然还是不够完善,它无法有效处理1000个量级,或 者更长的序列;另一个不足之处是每一个LSTM的cell里面存在4个 全连接层(MLP),如果LSTM(BiLSTM)的时间跨度很大,并且网络又很 深,会造成计算量很大,很耗时,其无法提升大规模软件缺陷识别的 效率。

技术实现思路

[0005]本专利技术所要解决的技术问题是提供一种基于BiGRU和attention 机制的软件缺陷检测方法,其显著提升了识别效率,具有很强的鲁棒 性和可靠性。
[0006]为解决上述问题,本专利技术所述的一种基于BiGRU和attention机 制的软件缺陷检测方法,包括:
[0007]获取软件代码并对其进行分段量化预处理,得到向量集;
[0008]将所述向量集输入预设的软件缺陷检测模型,所述软件缺陷检测 模型输出缺陷
类型及其概率;
[0009]所述预设的软件缺陷检测模型依序包括输入层、BiGRU层、 Attention层、Dense层和Softmax层,由大量样本采用mini

batch 方式训练而成。
[0010]优选的,所述输入层、所述Attention层和所述Softmax层均为 一层,所述BiGRU层和所述Dense层均为两层。
[0011]优选的,所述大量样本为CWE

119、CWE

399和/或 CWE

119&CWE

399代码漏洞数据。
[0012]优选的,所述Attention层的工作过程为:
[0013]接收来自所述BiGRU层的结果result1,将result1经过全连接 后与result1自身进行矩阵运算,使用softmax激活函数进行非线性 激活得到result2;
[0014]将result1与result2进行矩阵运算得到result3;
[0015]将result3与BiGRU原始的输出结果进行级联,最后再经过一层 使用tanh函数激活的全连接层,输出Attention层结果。
[0016]优选的,加入LeakReLU作为Dense层的激活函数,最后使用Adamx 优化器优化交叉熵损失函数。
[0017]本专利技术与现有技术相比具有以下优点:
[0018]1、软件是由代码封装而成,代码中的每个调用函数在执行过程 中都有一定的上下逻辑关系。考虑到循环神经网络中的BiGRU是使用 同一个门控进行遗忘和选择记忆,本质上使得参数量减少了,能够节 约了大量的计算成本和时间成本。除此之外,BiGRU比GRU有更强的 上下文逻辑关系记忆和筛选能力。因此,BiGRU能够学习到漏洞代码 数据集中更多的特征,而且消耗的计算资源和时间等代价都较低。为 了避免提取的特征过多而防止出现过拟合情况的出现,引入 Attention机制能让模型对重要信息重点关注,忽略或弱化非关键信 息。
[0019]2、在实验仿真时,将本专利技术的准确率和F1 Score与Li的方法、 BiLSTM、BiGRU、BiLSTM&Attention以及代码测试工具在 CWE

119&CWE

399、CWE

119和CWE

399数据集上进行了比较(详情 见后文),结果表明:本专利技术BiGRU&attention网络模型具有很强的 鲁棒性和可靠性。
附图说明
[0020]下面结合附图对本专利技术的具体实施方式作进一步详细的说明。
[0021]图1为本专利技术实施例提供的结构示意图。
具体实施方式
[0022]本专利技术实施例提供了一种基于BiGRU和attention机制的软件缺 陷检测方法,该方法具体包括如下内容:
[0023]步骤S1、获取软件代码并对其进行分段量化预处理,得到向量 集。
[0024]步骤S2、将向量集输入预设的软件缺陷检测模型,软件缺陷检 测模型输出缺陷类型及其概率。
[0025]参考图1示出的软件缺陷检测算法架构图,本专利技术中软件缺陷检 测模型为七层结
构,依序包括一个输入层、两个BiGRU层、一个 Attention层、两个Dense层和一个Softmax层。
[0026]BiGRU是对LSTM的优化和改进,因此其可以非常有效的解决RNN 网络中存在的长期依赖问题。在LSTM网络中,存在三个门函数:输 入门、遗忘门和输出门,而在GRU网络中,只存在两个门函数:更新 门函数和重置门函数。更新门函数是作用于控制前一时刻的隐含层状 态有多大程度更新到当前隐含层状态;重置门函数是作用于控制前一 时刻的隐含层状态有多大程度更新到当前候选隐含层状态。
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于BiGRU和attention机制的软件缺陷检测方法,其特征在于,该方法包括:获取软件代码并对其进行分段量化预处理,得到向量集;将所述向量集输入预设的软件缺陷检测模型,所述软件缺陷检测模型输出缺陷类型及其概率;所述预设的软件缺陷检测模型依序包括输入层、BiGRU层、Attention层、Dense层和Softmax层,由大量样本采用mini

batch方式训练而成。2.如权利要求1所述的方法,其特征在于,所述输入层、所述Attention层和所述Softmax层均为一层,所述BiGRU层和所述Dense层均为两层。3.如权利要求1所述的方法,其特征在于,所述大量样本为CWE

119、CWE

399和/或C...

【专利技术属性】
技术研发人员:赵金雄张驯马宏忠马志程狄磊
申请(专利权)人:国网甘肃省电力公司电力科学研究院
类型:发明
国别省市:

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

1