基于混合深度学习模型的软件漏洞检测方法

2021-08-18 21:53张瑞王晓菲
电脑知识与技术 2021年18期

张瑞 王晓菲

摘要:为解决传统软件漏洞检测方法检测吞吐率低的问题,基于混合深度学习模型设计软件漏洞检测方法。通过确定软件漏洞检测关键点,提取软件漏洞中的关键点,处理软件漏洞检测数据,剔除与软件漏洞关键点无关的检测数据,基于混合深度学习模型向量化表达软件漏洞特征,运用混合深度学习模型的学习能力检测软件漏洞,实现基于混合深度学习模型软件漏洞检测。设计实例分析,结果表明,设计检测方法检测吞吐率均在3reqs/s以上,远高于对照组的检测吞吐率,能够解决传统软件漏洞检测方法检测吞吐率低的问题。

关键词:混合深度学习模型;漏洞检测;吞吐率

中图分类号:TP343.7      文献标识码:A

文章编号:1009-3044(2021)18-0072-02

开放科学(资源服务)标识码(OSID):

在信息化时代中,由于软件的大范围开发,对开发者的专业性要求逐渐降低,导致开发者编写的代码越来越简单化。这就意味着,软件存在漏洞,其安全性急需提高[1]。在我国,但大多数对软件漏洞检测方法的研究都停留在通过关键设备检测软件异常,这种检测方法在本质上属于静态检测,而软件漏洞在本质上属于动态问题,因此传统方法在实际应用中存在检测效率低的问题,具有很大的局限性。在后续的研究中,国外提出学习模型在软件漏洞检测方法的应用,该方法一经推出,立即受到相关部门的重点关注。但由于科学技术的不断进步,为学习模型的优化设计提供了前所未有的机遇。因此,可以看出对软件漏洞检测方法的优化设计是势在必行的,混合深度学习模型可以提高数据处理效率。因此,本文将混合深度学习模型应用在软件漏洞检测方法设计中,致力于从根本上提高软件漏洞检测效率。

1混合深度学习模型

混合深度学习模型在本质上是一种前馈BP算法,可以通过卷积层以及池化层的人工神经元响应在覆盖范围内的所有单元。混合深度学习模型以其对数据以及图像出色的处理能力,能够广泛应用于各个行业中,并取得良好的应用效果[2]。本文基于混合深度学习模型设计型的软件漏洞检测方法具体内容,如下文所述。

2软件漏洞检测方法

2.1确定软件漏洞检测关键点

在软件漏洞检测过程中,必须预先确定软件漏洞检测点,以此为依据,展开智能检测[3]。本文采用基于混合深度学习模型中对软件的程序切片,提取软件漏洞检测点,软件漏洞检测点在直线中的位置,如表1所示。

结合表1所示,拟合软件漏洞检测点在直线中的位置,提取软件漏洞中的关键点,在明确软件漏洞中关键点的前提下,执行软件漏洞检测数据处理。

2.2软件漏洞检测数据处理

以上文得出的软件漏洞检测关键点为切入点,提取软件漏洞检测数据。并将字符型软件漏洞检测数据转化为数值型软件漏洞检测数据[4]。此过程,可通过公式可表现为:

[f:A→B]                                             (1)

式(1)中,[f]表示[A]與[B]之间的映射关系;[A]为原始字符型软件漏洞数据;[B]为二进制数据。由于软件漏洞检测中在收敛速度和精度方面多存在问题,利用混合深度学习模型,对数据就行归一化处理:

[X=P-MinMax-Min]                                   (2)

在公式(2)中,[X]表示归一化处理后的值;[P]表示原始软件漏洞检测数据权重;[Max]表示基于混合深度学习模型归一化的最大值;[Min]表示基于混合深度学习模型归一化的最小值。在通过公式(2),完成软件漏洞检测数据归一化处理。在此基础上,本文采用基于混合深度学习模型7×7的卷积核,分析软件漏洞检测数据。首先,将软件漏洞检测数据中的检测点作为一个独立的信号,提取信号中的与软件漏洞关键点相关的数据[5]。此过程可以通过计算的方式加以表达,设目标函数为[v],可得公式(3)。

[v=Kd/Xt]                            (3)

公式(1)中,[K]指的是软件漏洞检测数据总字符长度;[d]指的是软件漏洞检测数据集大小;[t]指的是软件漏洞检测数据与软件漏洞关键点的关联程度。通过公式(1),提取信号中的与软件漏洞关键点相关的数据,导入数据处理计算机,剔除与软件漏洞关键点无关的软件漏洞检测数据,保证软件漏洞检测数据处理精度。

2.3向量化表达软件漏洞特征

在完成软件漏洞检测数据处理的基础上,基于混合深度学习模型将软件漏洞检测数据嵌入到池化层和全连接层之间,向量化处理软件漏洞特征,并保证软件代码的完整度不被破坏[6]。

为基于混合深度学习模型向量化处理漏洞特征代码,在此基础上,通过编写 python 脚本,实现对软件漏洞特征向量的矩阵化,词向量的个数作为横坐标,词向量的维数作为纵坐标。特征矩阵大小统一处理为 50×50,词向量个数不足50个的用0补齐。以此,完成基于混合深度学习模型向量化表达软件漏洞特征。

2.4实现基于混合深度学习模型软件漏洞检测

基于混合深度学习模型向量化表达软件漏洞特征后,可以将软件漏洞检测的过程可以看作对一个深度学习结构权值参数的初始化训练过程[7]。为避免导致训练时间过长,使用混合深度学习模型在进行软件漏洞检测前,应通过数次训练,增强混合深度学习模型的学习能力,便于模型能够通过多次记忆提高自身学习能力,掌握更多的软件漏洞检测方法[8]。利用强分类器针对大量软件漏洞特征进行分类,帮助训练后的深度学习分类器能够快速地对软件漏洞特征做出详尽的表达,将表达结果作为检测软件漏洞的参照标准。设软件漏洞检测方程式为[x],可得公式(4)所示。

[x=12λv2]                                (4)

公式(4)中,[λ]指的是软件漏洞检测正则化率。得到公式(4)后,用混合深度学习模型判断软件漏洞的属性,以此实现软件漏洞检测。

3实例分析

3.1实验准备

构建实例分析,硬件设施包括:型号为TYR3583589的上位机。此次实验环境参数设置如下:任务最大迭代次数20、任务布置器2个、虚拟主机资源数量860、任务资源消耗量30、网络权重系数0.3575。

实验对象选取Kerdgerly软件,在保证实验具有有效性的前提下,选择同一个测试指标进行,实验的内容为测试本文方法与传统方法之间的检测吞吐率。分别使用本文方法与传统方法检测Kerdgerly软件漏洞,设置迭代次数为20,利用Heapchyer软件记录测得的检测吞吐率,分别设置为实验组和对照组。

3.2实验结果分析与结论

采集10组实验数据,并整理,绘制为实验结果图,如图1所示。

通过图1可得出如下的结论:本文检测方法检测吞吐率均在3reqs/s以上,远高于对照组的检测吞吐率,对于Kerdgerly软件漏洞检测效率更高。实验表明,設计的方法具有实用性,可以广泛应用于软件漏洞方面。

4结束语

通过基于混合深度学习模型的软件漏洞检测方法研究,来解决传统方法中软件漏洞检测中的问题,通过理论分析保证了理论可行性,并进行对比试验,验证了设计方法的实用性。在后期的发展中,应加大混合深度学习模型在软件漏洞检测方法中的应用力度。

参考文献:

[1] 李元诚,崔亚奇,吕俊峰,等.开源软件漏洞检测的混合深度学习方法[J].计算机工程与应用,2019,55(11):52-59.

[2] 杜鹏,丁世飞.基于混合词向量深度学习模型的DGA域名检测方法[J].计算机研究与发展,2020,57(2):433-446.

[3] 李传煌,吴艳,钱正哲,等.SDN下基于深度学习混合模型的DDoS攻击检测与防御[J].通信学报,2018,39(7):176-187.

[4] 李元诚,黄戎,来风刚,等.基于深度聚类的开源软件漏洞检测方法[J].计算机应用研究,2020,37(4):1107-1110,1114.

[5] 夏之阳,易平,杨涛.基于神经网络与代码相似性的静态漏洞检测[J].计算机工程,2019,45(12):141-146.

[6] 张成彬,赵慧,曹宗钰.基于深度学习的车身网络KWP2000协议漏洞挖掘[J].山东大学学报(工学版),2019,49(2):17-22.

[7] 赵磊,金银山,刘勤亮,等.基于深度学习的高结构化恶意样本的检测方法[J].武汉大学学报(理学版),2019,65(6):571-575.

[8] 张杰,黄仁书,林金霞.基于Deep Learning算法的漏洞扫描技术研究[J].黑河学院学报,2018,9(7):209-210.

【通联编辑:张薇】