CN115357896A - 一种基于深度学习的定向漏洞挖掘方法 - Google Patents
一种基于深度学习的定向漏洞挖掘方法 Download PDFInfo
- Publication number
- CN115357896A CN115357896A CN202210799713.3A CN202210799713A CN115357896A CN 115357896 A CN115357896 A CN 115357896A CN 202210799713 A CN202210799713 A CN 202210799713A CN 115357896 A CN115357896 A CN 115357896A
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- classification
- cwe
- learning
- deep learning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Virology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于深度学习的定向漏洞挖掘方法,通过将训练集源代码做数据预处理,形成CWE二分类和CWE多分类两个模块,获取上述漏洞代码的敏感函数,并进行标签化处理;再利用joern生成CPG代码切片并进行向量化处理,对其分别使用离线深度学习和在线图启发式学习;利用验证集,按照上述数据处理方式生成二分类和多分类评估报告;再将待测源代码通过上述模型生成判定的漏洞类型并输出结果,用判定的漏洞程序进行关键点覆盖子图的生成,并用QEMU动态插桩模块,实现判定漏洞程序的动态分析结果,并形成最终的定向漏洞挖掘报告,具有良好的完整性、准确性和实用性。
Description
技术领域
本发明属于计算机技术和网络安全技术领域,主要涉及了一种基于深度学习的定向漏洞挖掘方法。
背景技术
漏洞是指一个系统存在的缺陷和弱点,而基于漏洞源代码的研究,则是对漏洞的具体关键程序语句进行研究。现如今在电力系统乃至漏洞挖掘领域都缺乏足够的实际工程的源代码,因此数据采集和处理变得尤为重要。
在传统的漏洞挖掘领域,国内的电力系统的漏洞挖掘大多是基于常规模糊测试手段,挖掘效率较低,很大程度上仍依赖于安全人员的经验,而在智能漏洞挖掘、智能风险隐患排查方面存在技术短板。传统的比如基于人工定义漏洞模式的检测方式经常会导致较高的漏报率,学术界提出的学术方法仅仅只基于预测,对于预测的结果的分析和事实结果缺乏完整的方案和分析。并且,对于现有的漏洞挖掘方法大多单一和笼统,其落地的效果和可能性不佳,因此可能在海量电力场景下难以实施,综合来说,主要表现在:1)漏洞测试样本分布极其不均匀,大部分漏洞类型的测试样本种类偏少导致无法进行有效漏洞挖掘;2) 存在重复漏洞挖掘现象,对于挖掘出来的漏洞无法快速判断是已知漏洞还是未知漏洞,无法判断漏洞的具体分类;3)漏洞挖掘存在盲目性,很难在有限的时间内快速定位到漏洞存在的位置,严重影响漏洞挖掘效率。因而如何有效且高效的解决上述问题,成为了本领域技术人员迫切需要克服的技术难题。
发明内容
本发明正是针对现有漏洞挖掘技术中存在的不足,提供一种基于深度学习的定向漏洞挖掘方法,通过将训练集源代码做数据预处理,形成CWE二分类和 CWE多分类两个模块,获取上述漏洞代码的敏感函数,并进行标签化处理;再利用joern生成CPG代码切片并进行向量化处理,对其分别使用离线深度学习和在线图启发式学习;利用验证集,按照上述数据处理方式生成二分类和多分类评估报告;再将待测源代码通过上述模型生成判定的漏洞类型并输出结果,用判定的漏洞程序进行关键点覆盖子图的生成,并用QEMU动态插桩模块,实现判定漏洞程序的动态分析结果,并形成最终的定向漏洞挖掘报告,具有良好的完整性、准确性和实用性。
为了实现上述目的,本发明采取的技术方案是:一种基于深度学习的定向漏洞挖掘方法,包括如下步骤:
S1,数据预处理:对获取的数据进行数据集划分,分为训练集、验证集和测试集,并对训练集的源代码数据进行数据预处理;
S2,数据划分:将训练集的数据分类成CWE二分类模块和CWE多分类模块,所述CWE二分类模块中数据是只包含一种CWE漏洞类型和无漏洞代码的二分类数据,其中CWE漏洞类型为CWE119漏洞或CWE120漏洞或CWE469漏洞或CWE476 漏洞或CWEother漏洞;所述CWE多分类模块中数据为多种CWE漏洞类型和无漏洞代码的多分类数据,只包括CWE120、CWE476、CWEother和无漏洞代码的混合源代码集;
S3,均衡性处理:对步骤S2划分的CWE二分类模块和CWE多分类模块做样本均衡性处理;
S4,敏感函数库生成:利用joern和checkmarx分别对只包含一种CWE类型的漏洞代码和包含多种类型的漏洞代码进行扫描,生成相应的敏感函数库,所述扫描的漏洞代码是未经编译的源代码程序;
S5,CPG流的代码切片获得:基于敏感函数库,利用CPG流信息获取与敏感语句相关的该函数的其他语句,逆向得到逆向切片,顺向得到顺向切片,组合后形成CPG流的代码切片;
S6,分流处理:针对不同的离线和在线学习算法,对步骤S5获得的CPG流的代码切片选择不同的处理方式:
采用离线的深度学习算法学习,需要将CPG流切片经过分词并向量化处理,再经过深度学习离线模型,实现二分类和多分类;
采用在线的图算法学习,需要在深度学习中的在线的图学习算法模块前将代码属性图CPG的节点特征集和边集转换成DGLGraph图数据结构,将CPG 流切片生成CPG图,利用RGCN图算法学习CPG图的特征,最后通过全连接神经网络softmax层进行二分类;
S7,评估报告获得:将验证集源程序分别送入步骤S6获得的深度离线学习的二分类深度离线学习模型、多分类深度离线学习模型和二分类的在线图学习模型中做评估,得到离线深度学习的二分类评估报告、离线深度学习的多分类评估报告和在线的图学习的二分类评估报告;
S8,测试集结果输出:将测试集源代码放入二分类深度离线学习模型当中,形成二分类的结果,即是否为漏洞;将测试集源代码放入多分类深度离线学习模型当中,形成多分类结果;放入二分类的在线图学习模型当中,形成二分类的结果,即是否为漏洞;基于所预测的漏洞进行漏洞的确认,得到最终定向的漏洞挖掘报告。
与现有技术相比,本发明基于深度学习的定向挖掘方法,对数据处理更加标准,特别是是基于敏感函数的CPG流的切片方式可以通过脚本自动实现,代替了传统的人工方式;特别是采用离线和在线的深度学习技术,实现了传统机器学习不能实现的大数据量的二分类和多分类;此外本发明使得漏洞挖掘智能化技术更加完备,将动态分析和静态分析结合,提升了漏洞定向挖掘在大数据集上的细粒度和落地可能性,具有良好的完整性、准确性和实用性。
附图说明
图1为本发明基于深度学习的定向漏洞挖掘方法的步骤流程图;
图2为本发明实施例2中步骤4后生成的对应的CPG代码属性图;
图3为本发明实施例2中离线深度学习模型的结构示意图。
具体实施方式
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
实施例1
一种基于深度学习的定向漏洞挖掘方法,如图1所示,依次包括以下步骤:
S1:通过对获取的数据进行划分为训练集、验证集和测试集做数据处理,数据处理包括注释的去除、空行的去除、符号未闭合等情况的处理;数据采用的是比CVE漏洞在分类和识别方面更加细致的CWE漏洞集合,其特点是包含的是漏洞的弱点类别而非特定软件包的漏洞。
S2:将处理后的数据集进行分类,分为CWE二分类数据集和CWE多分类数据集;
其中,CWE二分类包含:只包括CWE119漏洞和无漏洞代码的混合源代码,其二分类目的是预测是否是CWE119漏洞;只包括CWE120漏洞和无漏洞代码的混合源代码,其二分类目的是预测是否是CWE120漏洞;只包括CWE469漏洞和无漏洞代码的混合源代码,其二分类目的是预测是否是CWE469漏洞;只包括 CWE476漏洞和无漏洞代码的混合源代码,其二分类目的是预测是否是CWE476漏洞;只包括CWEother漏洞和无漏洞代码的混合源代码集,其中CWEother为存在漏洞但不确定漏洞种类的源代码,其二分类目的是预测有没有漏洞。
因实际采样数据问题,以及漏洞相似性原因,数据主要研究集中在CWE120、CWE476、CWEother和无漏洞代码源代码。
其中,CWE多分类,因实际数据的比例问题,多分类只包括CWE120、CWE476、CWEother和无漏洞代码的混合源代码集。
S3:考虑到后面深度学习算法的采样问题,将CWE二分类模块和CWE多分类模块分别做样本均衡性处理:
对于CWE二分类模块主要是将CWE二分类当中的CWE120、CWE476和CWEother 与无漏洞代码做1:1比例混合,其中选取的公式分别是min(CWE120漏洞函数个数,无漏洞函数个数),min(CWE476漏洞函数个数,无漏洞函数个数),min(CWEother漏洞函数个数,无漏洞函数个数),无漏洞代码均是顺序选取;
对于CWE多分类模块主要是将CWE中的CWE120、CWE476、CWEother和无漏洞代码混合成比例接近1:1:1:1,其中选取的公式是min(CWE120,CWE476, CWEother、无漏洞代码).
S4-S5:利用joern和checkmarx分别对只包含一种CWE类型的漏洞代码和包含多种类型的漏洞代码进行扫描生成相应的敏感函数库,并基于敏感函数库,利用CPG流,逆向得到逆向切片,同时顺向得到顺向切片,最终形成CPG流的代码切片。
敏感函数库是指通过SCA和checkmarx扫描漏洞数据集的高危敏感函数,扫描的是未经编译的源代码程序;CPG流的代码切片是指基于所得到的高危敏感函数,通过控制流和数据流信息顺向和逆向获取高危敏感函数相关的其他语句,最后进行组合,实现更细粒度的漏洞程序。
基于定位的漏洞代码的敏感函数位置,利用joern得到这些漏洞函数的CPG 流信息,其具体包括控制流和数据流信息,并基于上述信息顺向和逆向获得与敏感函数相关的切片语句,并按照顺序进行组合成程序切片,并整理成新的样本,新样本包括:真实包含敏感函数的均衡CWE二分类程序切片和真实包含敏感函数的均衡CWE多分类程序切片。
S6:根据步骤S5获得的CPG流的代码切片,针对不同的离线和在线学习算法,选择不同的代码切片的处理方式,具体如下:
针对CPG代码流切片,采用离线的深度学习算法学习,则需要将CPG流切片经过分词和Embedding模块的向量化处理后,再利用LSTM层做特征选取,接着利用注意力机制为敏感函数分配权重,最后通过softmax层进行二分类和多分类;针对CPG代码流切片,采用在线的图算法学习,则需要将CPG流切片生成CPG图,利用RGCN图算法学习CPG图的特征,最后通过全连接神经网络softmax 层进行二分类。
将真实包含敏感函数的均衡CWE二分类程序切片做分词向量化处理操作,也将真实包含敏感函数的均衡CWE多分类程序切片做分词向量化处理操作,所述分词向量化处理操作指利用Jieba.cut进行分词,并定义文本切分方法为空格切分,建立单词表,并利用index索引将其编号存储到字典中去,文本保持长度为固定参数,不足补0,并利用Embedding模块,通过设定词向量的维度形成最终的分词向量化。分词方法主要是利用jieba库,接着进行向量化处理,主要利用torchtext库将分词表整理为PyTorch网络可用的数据张量,所用的为Embedding模块作为词向量生成模块;将生成的均衡的CWE二分类训练集数据张量导入到深度离线学习中,这里采用LSTM网络,输入层与数据张量的维度相同,LSTM层采用1层,神经元20个,输出层为2个神经元代表着是该CWE漏洞分类和无漏洞代码分类结果;将生成的均衡的CWE多分类训练集数据张量导入到深度离线学习中,这里方法同上,不同的是神经元是128个,分类器的输出包含四个神经元,对应四类分类结果;
同时,将真实包含敏感函数的均衡CWE二分类程序切片做DGLGraph生成操作,将生成的均衡的CWE二分类训练集数据DGLGraph导入到图RGCN在线学习算法,从而进行学习图的聚和特征,再利用全连接神经网络和softmax做二分类。
S7:根据步骤S6得到的离线的深度学习二分类模型、多分类模型和在线的图学习算法模型,将验证集源程序按照步骤S1-S5进行处理后,送入算法模型中得到验证的评估报告,评估报告所用指标在二分类中主要是准确率(ACC)、精度(P)、召回率(R)、F1值(F1);在多分类中主要为损失、识别精度,公式如下:
ACC=(TP+TN)/(TP+FP+TN+FN) (1)
P=TP/(TP+FP) (2)
R=TP/(TP+FN) (3)
F1=2*P*R/(P+R) (4)
其中,式(1)中TP为被模型预测为有漏洞的漏洞样本,TN被模型预测为无漏洞的无漏洞样本,FP是预测为有漏洞的无漏洞样本,FN是预测无漏洞的有漏洞样本。
在多分类中衡量的主要标准是损失和识别精度,损失函数采用CrossEntropyLoss()函数,其主要采用交叉熵的方式进行计算,公式为
H(p,q)=-∑X(p(X)*log(q(x)) (5)
其中,式(5)中p(X)为概率分布函数即p(X)=p(X=x),定义事件X=x0的信息量为:I(x0)=-log(p(x0)),当p(x0)=1时,熵为0,也就是说该事件发生不会导致任何信息量的增加,也就是通过上述公式能够增加与期望输出结果的相似性。
S8:将训练得到的模型,将测试集按照上述方法处理后,送入模型中做分类,输出漏洞的类型。将测试集源代码通过步骤S1-S6分别放入步骤S7生成的二分类深度学习模型当中,形成二分类的结果,即是否为漏洞;放入步骤S7的多分类深度学习模型当中,形成多分类结果;处理后放入到图在线深度学习模型当中,形成二分类的结果,即是否为漏洞。基于预测的结果,对漏洞进行确认,最后将结果汇总到漏洞定向挖掘报告中。
基于所预测的漏洞进行漏洞的确认,主要是通过关键点子图覆盖,通过 joern和待测源程序的源码属性图的逆向获取关键点位置,当确定关键点后,可以从提取的控制流图中计算出所有能覆盖到关键点对应控制流图节点的子图,为了能够了解到在挖掘该漏洞时,输入数据在程序路径中的运行、抵达情况,需要根据子图信息,逆向找到对应代码位置,接着采用动态程序分析,利用QEMU 动态插桩技术,对漏洞程序进行QEMU动态插桩,在此应用场景下采用插桩的方法,观测程序运行时的数值情况,以监测对应子图节点的运行状态。在大型程序中,完整程序流程图的生成耗时较长,所以在插桩时采用基于二进制的QEMU 动态插桩模式,在程序运行时进行插桩工作,动态执行程序,观察所有到关键点的路径覆盖子图,引导出成本代价最小的路径子图,确保代码覆盖率更高,降低了静态分析的成本,最后基于上述步骤得到最终的定向的漏洞挖掘报告,提升了漏洞定向挖掘在大数据集上的细粒度和落地可能性,具有良好的完整性、准确性和实用性。
实施例2:
一种基于深度学习的定向漏洞挖掘方法,以训练源程序漏洞类型为CWE469:
_dbus_string_copy_to_buffer_with_nul(constDBusString*str,char*buffer,int avail_len)
{
DBUS_CONST_STRING_PREAMBLE(str);
_dbus_assert(avail_len>=0);
_dbus_assert(avail_len>real->len);
#字符串拷贝函数
memcpy(buffer,real->str,real->len+1);
}
处理步骤如下:
1、先对数据做预处理,去除注释后等操作后,形成处理后的源代码。
2、接着对多个这样类似的函数进行处理,分类并且均衡性混合,这里以一个敏感函数为例。
3、利用joern和checkmarx进行扫描,获得敏感函数memcpy以及buffer,其中memcpy为导致内存泄漏风险的敏感函数;而buffer没有null终止符。将此缓冲区视为null结尾字符串的任何后续操作都会导致意外或危险的行为;
4、接着获取该敏感语句相关的CPG流信息,其中 _dbus_string_copy_to_buffer_with_nul的方法与memcpy敏感语句是直接AST 关系,而其他语句是CFG关系,通过初步修剪,只保留该敏感语句有关的前向和后向CPG切片为:
再生成对应CPG流的代码切片的代码属性图,如图2所示,代码属性图的作用一方面是作为图算法学习,另一方面是做程序内部逻辑可视化。
5、将该敏感语句相关的切片进行分词和编码,这里设置敏感语句分向量长度为100维,CPG流切片词向量长度为169维,以用于如图3的离线深度学习模型当中,定义迭代次数60轮,分类器输出4个神经元,分类精确度达到89.32%。
6、同时将生成的CPG代码属性图,利用图算法做聚合特征学习,再传入到全连接神经网络,参数类比如上,最后得到分类结果,分类精确度达到87.56%。
7、最后将测试样本的源代码,按照上述处理方式后传入训练的神经网络模型中,得到分类结果,并对其进行动态插桩检测。以上述程序为例,即对 *str=”sss”,*buffer=”c”,avail_len=10,让函数运行,观察到敏感语句的所有可达路径的覆盖子图,综上形成最终的定向漏洞挖掘报告。
综上所述,本发明在深度学习的定向漏洞挖掘方法,改善了传统的代码切片结果,提升了切片细粒度;实现了基于代码属性图的特征学习,并将其融入到深度学习、图学习的方法中去,提升了传统漏洞挖掘的准确度和细粒度;最后在漏洞挖掘领域首次提出并设计较为完备的多漏洞分类的方法,实验表明具有良好的完整性、准确性和实用性。
需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。
Claims (8)
1.一种基于深度学习的定向漏洞挖掘方法,其特征在于,包括如下步骤:
S1,数据预处理:对获取的数据进行数据集划分,分为训练集、验证集和测试集,并对训练集的源代码数据进行数据预处理;
S2,数据划分:将训练集的数据分类成CWE二分类模块和CWE多分类模块,所述CWE二分类模块中数据是只包含一种CWE漏洞类型和无漏洞代码的二分类数据,其中CWE漏洞类型为CWE119漏洞或CWE120漏洞或CWE469漏洞或CWE476漏洞或CWEother漏洞;所述CWE多分类模块中数据为多种CWE漏洞类型和无漏洞代码的多分类数据,只包括CWE120、CWE476、CWEother和无漏洞代码的混合源代码集;
S3,均衡性处理:对步骤S2划分的CWE二分类模块和CWE多分类模块做样本均衡性处理;
S4,敏感函数库生成:利用joern和checkmarx分别对只包含一种CWE类型的漏洞代码和包含多种类型的漏洞代码进行扫描,生成相应的敏感函数库,所述扫描的漏洞代码是未经编译的源代码程序;
S5,CPG流的代码切片获得:基于敏感函数库,利用CPG流信息获取与敏感语句相关的该函数的其他语句,逆向得到逆向切片,顺向得到顺向切片,组合后形成CPG流的代码切片;
S6,分流处理:针对不同的离线和在线学习算法,对步骤S5获得的CPG流的代码切片选择不同的处理方式:
采用离线的深度学习算法学习,需要将CPG流切片经过分词并向量化处理,再经过深度学习离线模型,实现二分类和多分类;
采用在线的图算法学习,需要在深度学习中的在线的图学习算法模块前将代码属性图CPG的节点特征集和边集转换成DGLGraph图数据结构,将CPG流切片生成CPG图,利用RGCN图算法学习CPG图的特征,最后通过全连接神经网络softmax层进行二分类;
S7,评估报告获得:将验证集源程序分别送入步骤S6获得的深度离线学习的二分类深度离线学习模型、多分类深度离线学习模型和二分类的在线图学习模型中做评估,得到离线深度学习的二分类评估报告、离线深度学习的多分类评估报告和在线的图学习的二分类评估报告;
S8,测试集结果输出:将测试集源代码放入二分类深度离线学习模型当中,形成二分类的结果,即是否为漏洞;将测试集源代码放入多分类深度离线学习模型当中,形成多分类结果;放入二分类的在线图学习模型当中,形成二分类的结果,即是否为漏洞;基于所预测的漏洞进行漏洞的确认,得到最终定向的漏洞挖掘报告。
2.如权利要求1所述一种基于深度学习的定向漏洞挖掘方法,其特征在于:所述步骤S1中的数据预处理至少包括代码注释的去除、空行的去除、块状注释未闭合以及符号未闭合情况的处理。
3.如权利要求1所述一种基于深度学习的定向漏洞挖掘方法,其特征在于:所述步骤S3中,对于CWE二分类模块的均衡性处理是将CWE二分类当中的CWE120、CWE476和CWEother与无漏洞代码做1:1比例混合,其中选取的公式分别是min(CWE120漏洞函数个数,无漏洞函数个数),min(CWE476漏洞函数个数,无漏洞函数个数),min(CWEother漏洞函数个数,无漏洞函数个数),无漏洞代码均是顺序选取;
对于CWE多分类模块的均衡性处理是将CWE中的CWE120、CWE476、CWEother和无漏洞代码混合成比例接近1:1:1:1,其中选取的公式是min(CWE120,CWE476,CWEother、无漏洞代码)。
4.如权利要求2或3所述一种基于深度学习的定向漏洞挖掘方法,其特征在于:所述步骤S5中,根据步骤S4所定位的漏洞代码的敏感函数位置,利用joern得到漏洞函数的CPG流信息,所述CPG流信息包括控制流和数据流信息,基于流信息顺向和逆向获得与敏感函数相关的切片语句,并按照顺序进行组合成程序切片,整理成新的样本;所述新样本包括:真实包含敏感函数的均衡CWE二分类程序切片和真实包含敏感函数的均衡CWE多分类程序切片。
5.如权利要求4所述一种基于深度学习的定向漏洞挖掘方法,其特征在于:所述步骤S6中分词并向量化是利用Jieba.cut进行分词,并定义文本切分方法为空格切分,建立单词表,利用index索引将其编号存储到字典中去,文本保持长度为固定参数,不足补0,并利用Embedding模块,通过设定词向量的维度形成最终的分词向量化。
6.如权利要求5所述一种基于深度学习的定向漏洞挖掘方法,其特征在于:所述步骤S6中离线深度学习模型是指:融合注意力机制的LSTM多分类算法,在深度学习中的利用LSTM网络训练,并融入注意力机制模块,定义优化器,调整训练轮数,所述模型包括输入层,嵌入层,LSTM模块层,注意力模块层和多分类模块层,用于实现二分类和多分类。
7.如权利要求6所述一种基于深度学习的定向漏洞挖掘方法,其特征在于:所述步骤S7中的评估报告,在二分类评估报告中的指标主要是准确率(ACC)、精度(P)、召回率(R)、F1值(F1),公式如下:
ACC=(TP+TN)/(TP+FP+TN+FN)
P=TP/(TP+FP)
R=TP/(TP+FN)
F1=2*P*R/(P+R)
其中,TP为被模型预测为有漏洞的漏洞样本,TN被模型预测为无漏洞的无漏洞样本,FP是预测为有漏洞的无漏洞样本,FN是预测无漏洞的有漏洞样本;
在多分类评价报告中的衡量标准主要是损失和识别精度,损失函数采用CrossEntropyLoss()函数,其主要采用交叉熵的方式进行计算,公式为
H(p,q)=-∑X(p(X)*log(q(x))
其中,p(X)为概率分布函数即p(X)=p(X=x),定义事件X=x0的信息量为:I(x0)=-log(p(x0)),当p(x0)=1时,熵为0,即该事件发生不会导致任何信息量的增加,通过上述公式能够增加与期望输出结果的相似性。
8.如权利要求7所述一种基于深度学习的定向漏洞挖掘方法,其特征在于:所述步骤S8中的漏洞确认具体为:通过关键点子图覆盖,即通过joern和待测源程序的源码属性图的逆向获取关键点位置,当确定关键点位置后,可以从提取的控制流图中计算出所有能覆盖到关键点对应控制流图节点的所有路径子图,采用动态程序分析,利用QEMU动态插桩技术,得到最终定向的漏洞挖掘报告;所述QEMU动态插桩技术为采用插桩的方法,观测程序运行时的数值情况,以监测对应子图节点的运行状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210799713.3A CN115357896A (zh) | 2022-07-08 | 2022-07-08 | 一种基于深度学习的定向漏洞挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210799713.3A CN115357896A (zh) | 2022-07-08 | 2022-07-08 | 一种基于深度学习的定向漏洞挖掘方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115357896A true CN115357896A (zh) | 2022-11-18 |
Family
ID=84032686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210799713.3A Pending CN115357896A (zh) | 2022-07-08 | 2022-07-08 | 一种基于深度学习的定向漏洞挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115357896A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115686923A (zh) * | 2023-01-05 | 2023-02-03 | 中国人民解放军军事科学院系统工程研究院 | 一种软件源代码缺陷自动修复方法及系统 |
CN117574393A (zh) * | 2024-01-16 | 2024-02-20 | 国网浙江省电力有限公司 | 一种信息终端漏洞挖掘方法、装置、设备及存储介质 |
-
2022
- 2022-07-08 CN CN202210799713.3A patent/CN115357896A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115686923A (zh) * | 2023-01-05 | 2023-02-03 | 中国人民解放军军事科学院系统工程研究院 | 一种软件源代码缺陷自动修复方法及系统 |
CN115686923B (zh) * | 2023-01-05 | 2023-04-07 | 中国人民解放军军事科学院系统工程研究院 | 一种软件源代码缺陷自动修复方法及系统 |
CN117574393A (zh) * | 2024-01-16 | 2024-02-20 | 国网浙江省电力有限公司 | 一种信息终端漏洞挖掘方法、装置、设备及存储介质 |
CN117574393B (zh) * | 2024-01-16 | 2024-03-29 | 国网浙江省电力有限公司 | 一种信息终端漏洞挖掘方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
CN115357896A (zh) | 一种基于深度学习的定向漏洞挖掘方法 | |
CN109902024B (zh) | 一种程序路径敏感的灰盒测试方法及装置 | |
EP3040740B1 (en) | Systems and methods for inspecting cargoes | |
CN108763931A (zh) | 基于Bi-LSTM和文本相似性的漏洞检测方法 | |
Tian et al. | BVDetector: A program slice-based binary code vulnerability intelligent detection system | |
CN109918505B (zh) | 一种基于文本处理的网络安全事件可视化方法 | |
CN105740712A (zh) | 基于贝叶斯网络的Android恶意行为检测方法 | |
Ding et al. | VELVET: a noVel Ensemble Learning approach to automatically locate VulnErable sTatements | |
CN112733156A (zh) | 基于代码属性图的软件脆弱性智能检测方法、系统及介质 | |
CN116049831A (zh) | 一种基于静态分析和动态分析的软件漏洞检测方法 | |
CN113010895B (zh) | 一种基于深度学习的漏洞危害评估方法 | |
CN113609488B (zh) | 基于自监督学习及多通道超图神经网络的漏洞检测方法与系统 | |
CN113595998A (zh) | 基于Bi-LSTM的电网信息系统漏洞攻击检测方法及装置 | |
CN111177731A (zh) | 一种基于人工神经网络的软件源代码漏洞检测方法 | |
CN113672931A (zh) | 一种基于预训练的软件漏洞自动检测方法及装置 | |
CN116340952A (zh) | 一种基于操作码程序依赖图的智能合约漏洞检测方法 | |
CN115269427A (zh) | 针对web注入漏洞的中间语言表示方法及系统 | |
CN116150757A (zh) | 一种基于cnn-lstm多分类模型的智能合约未知漏洞检测方法 | |
CN112035345A (zh) | 一种基于代码片段分析的混合深度缺陷预测方法 | |
CN116578980A (zh) | 基于神经网络的代码分析方法及其装置、电子设备 | |
Zhang et al. | A software defect prediction approach based on bigan anomaly detection | |
Sotgiu et al. | Explainability-based debugging of machine learning for vulnerability discovery | |
Wu et al. | Code vulnerability detection based on deep sequence and graph models: A survey | |
CN116702157B (zh) | 一种基于神经网络的智能合约漏洞检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |