CN109214191A - 一种利用深度学习预测软件安全漏洞的方法 - Google Patents

一种利用深度学习预测软件安全漏洞的方法 Download PDF

Info

Publication number
CN109214191A
CN109214191A CN201811086306.8A CN201811086306A CN109214191A CN 109214191 A CN109214191 A CN 109214191A CN 201811086306 A CN201811086306 A CN 201811086306A CN 109214191 A CN109214191 A CN 109214191A
Authority
CN
China
Prior art keywords
software
source code
node
code module
syntax tree
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
Application number
CN201811086306.8A
Other languages
English (en)
Inventor
危胜军
钟浩
单纯
胡昌振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201811086306.8A priority Critical patent/CN109214191A/zh
Publication of CN109214191A publication Critical patent/CN109214191A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本发明公开了一种利用深度学习预测软件安全漏洞的方法,将被分析软件划分为软件源代码模块,建立软件源代码模块的抽象语法树,并确定抽象语法树的向量表达;以软件源代码模块的各节点向量表达为输入、软件源代码模块是否包含漏洞为输出,组建训练样本,对卷积神经网络深度学习模型进行训练;对待预测软件进行安全漏洞预测时,根据所述选定粒度划分软件源代码模块;选择训练好的卷积神经网络深度学习模型,将待预测软件源代码模块的抽象语法树的节点向量表达作为模型输入,模型输出即为软件源代码模块有无漏洞的安全漏洞预测结果。上述该向量表达和学习模型能够很好地描述和提取源代码中的结构性特征,具有预测精度高,误报率低的优点。

Description

一种利用深度学习预测软件安全漏洞的方法
技术领域
本发明涉及软件安全漏洞检测技术领域,尤其涉及一种利用深度学习预测软件安全漏洞的方法。
背景技术
任何信息系统的核心构建都包含软件系统,在这些系统中,发现了大量的安全漏洞,攻击者利用这些漏洞,可以轻易的获得系统根权限,造成敏感信息泄露,危害极大。在软件产品发布前,生产厂家都会投入大量的人力物力进行软件安全漏洞的发现并剔除,以确保软件系统的安全性。但是,大部分厂家都由于有限的人力、经费投入以及时间成本的限制,只能发现极少部分漏洞,大部分漏洞都被残留在软件产品中。
目前,常用的软件漏洞预测采用机器学习方法建立软件漏洞预测模型(VPM),建立过程如图1所示:
①软件源代码模块的度量特征建立
针对软件源代码模块,建立描述模块的特征。这些特征根据需要可以是对模块质量的度量,也可以是对模块安全性的度量,或者是针对其他属性的度量。
软件源代码模块是一段代码,是被分析的对象,可根据需要自行选取:可以是一个文件、一个函数、一个类、一个方法、一个包、一个子系统、一条程序语句等。目前所采用的度量特征主要针对软件的两个方面:一是针对源代码本身,关注程序模块的代码规模和内在复杂度等属性,例如,采用面向对象开发程序的CK指标,包括WMC、DIT、NOC、CBO、RFC和LCOM等;二是针对软件开发过程,关注软件开发过程中的环境因素,包括代码修改特征、开发人员经验、模块间的依赖性以及项目团队组织构架等。
度量特征的建立有两种途径:一种是人工进行选取和定义;另一种是采用机器学习算法自动进行学习。随着深度学习技术的发展,有研究者将深度学习技术引入到漏洞预测模型中自动学习建立软件模块的度量特征。
②软件历史漏洞数据库建立
从已经公开的软件漏洞库中收集针对某个软件项目的到目前的所有漏洞,建立针对该软件项目的软件漏洞库。软件漏洞库中明确了针对该软件项目每个软件模块中漏洞的位置和数量。
③软件漏洞预测机器学习模型的训练、测试
针对某个软件项目,计算每个软件模块的度量特征的具体数值,利用软件历史漏洞库获得每个软件模块的有无漏洞的标签或者漏洞数量,然后选择适合于该软件项目的机器学习算法,将度量特征的具体数值作为输入,有无漏洞的标签或者漏洞数量作为输出,建立(训练、测试和参数调整)针对于该软件项目的软件漏洞预测的机器学习模型。
④软件漏洞预测机器学习模型的应用
训练完成以及测试合格的漏洞预测模型可以对该项目的新的软件模块的漏洞情况进行预测。首先计算新的软件模块的度量特征的具体数值,将数值输入到预测模型中,模型输出的结果即为该软件模块存在漏洞的可能性或者数量。
在整个模型建立的过程中,影响预测模型性能的因素有三个方面:度量特征的选取、漏洞库的质量以及具体的机器学习算法。所选取的度量特征应当能够反映有漏洞模块和没有漏洞模块的本质特征,也就是度量特征对有漏洞和没有漏洞模块具有一定的区分能力;软件漏洞库的质量也在很大程度上影响到模型的性能,所建立的软件漏洞库应当具有较高的准确性和较好的完备性;机器学习算法本身也具有不同的性能,针对不同的软件项目,选取适合于本项目的机器学习算法。
当历史漏洞库以及所选取的机器学习算法确定后,度量特征的选取就成了影响预测模型的主要因素了。目前,围绕不同的度量特征,建立了多种不同的漏洞预测模型。
现有的软件模块的度量特征自动学习方法的基本做法是:将软件源代码模块视为一段文本,首先使用分词技术对文本进行分词,得到针对该软件模块的word集合,然后使用word embedding将每个word映射到一个维度较低欧氏空间,使得相似的word具有相似的意义,此时得到了每个word的词向量。之后,将源代码模块视为一个前后相关联的word序列,将word的词向量作为输入,利用LSTM对该序列进行学习,学习完成后得到针对每个word的一个状态向量,该状态向量即为自动学习得到的度量特征,该特征是一种隐性特征,没有直观的物理意义。
编程语言与自然语言有很多相似之处,可以采用NLP(自然语言处理)中的方法对编程语言进行处理,但是编程语言与自然语言有本质上的不同,主要表现在编程语言具有丰富且明确的结构性信息,例如,在编程语言中具有循环、分支和深度很高的多层次嵌套结构,这一点是自然语言中所没有的。因此,上述中直接套用NLP中的文本特征学习的方法有两个主要不足:
·word embedding嵌入的效果并不理想,在很大程度上,相似的词并不能具有相似的意义。例如,绝大多数编程语言中for和while都表示循环结构,这两个词具有相似的意义,嵌入后的词向量也应该相近,但是目前的效果并不好,原因是源代码文本分词后丢失了原来文本的结构性信息。
·采用LSTM(长短期记忆网络)深度学习模型对源代码模块进行特征提取的效果并不理想,原因是LSTM针对结构性特征的学习能力有限,需要开发新的深度学习模型。
可见,现有的方法在特征表达以及特征学习两个层面上都缺少处理结构性特征的能力。
发明内容
有鉴于此,本发明提供了一种利用深度学习预测软件安全漏洞的方法,该向量表达和学习模型能够很好地描述和提取源代码中的结构性特征,具有预测精度高,误报率低的优点。
为了解决上述技术问题,本发明是这样实现的:
一种利用深度学习预测软件安全漏洞的方法,包括:
步骤一、将与待预测软件属于同一类型的软件作为被分析软件,根据选定粒度将所述被分析软件划分为软件源代码模块,建立软件源代码模块的抽象语法树;
步骤二、针对各软件源代码模块,建立其抽象语法树节点的向量表达;
步骤三、以软件源代码模块的各节点向量表达为输入、软件源代码模块是否包含漏洞为输出,组建训练样本,对卷积神经网络深度学习模型进行训练;
步骤四、对待预测软件进行安全漏洞预测时,根据所述选定粒度划分软件源代码模块;选择训练好的卷积神经网络深度学习模型,将待预测软件源代码模块的抽象语法树的节点向量表达作为模型输入,模型输出即为软件源代码模块有无漏洞的安全漏洞预测结果。
优选地,步骤一所述选定粒度为:一条语句、一个函数、一个方法、一个类、一个包、一个模块、一个文件或者任意一个子系统。
优选地,步骤二所述建立抽象语法树节点的向量表达为:
步骤21、定义抽象语法树中父子节点之间的结构量化表达式;
设节点x的向量为Vec(x),Vec(x)∈RT,T表示设定的Vec(x)的维度,R表示实数域;针对抽象语法树中的每个非叶子节点p,设节点p的直接子节点为c1,c2,…,cn,它们的向量表示分别为Vec(p),Vec(c1),…,Vec(cn),根据抽象语法树中父节点与子节点之间的结构关系,将节点p的结构关系量化为:
Vec(p)≈tanh(∑iliWi·Vec(ci)+b)
其中,i=1,2,…,n;Wi∈RT×T是节点ci的权矩阵;b∈RT是设定的偏置项;li=(子节点ci的叶子节点数量)/(节点p的叶子节点数量),作为子节点ci的相对重要因子,tanh()为激活函数;
步骤22、采用带有负采样的梯度下降法对各结构关系量化表达进行训练;当遍历完软件的所有软件源代码模块后,得到各个节点的向量表达Vec(x)。
优选地,步骤三软件源代码模块是否包含漏洞为输出是根据历史软件漏洞信息确定的。
优选地,所述历史软件漏洞信息包括:从公开的软件漏洞库中搜集待预测软件的漏洞实例,以及与待预测软件同一类型软件的漏洞实例。
优选地,在步骤四中,待预测软件源代码模块的抽象语法树的节点向量表达的获取方式为:
生成待预测的软件源代码模块的抽象语法树,根据抽象语法树中各节点名称,从步骤二已经建立的向量表达中进行提取,获得待预测软件源代码模块的抽象语法树的节点向量表达。
优选地,所述待预测软件与所述被分析软件属于系列版本。
有益效果:
本发明从软件源代码模块的抽象语法树中提取节点的向量表达,作为软件源代码模块的度量特征。再利用能够处理树形二维向量的卷积神经网络深度学习模型作为机器学习模型进行训练和预测。由于节点之间的关系,以及节点的向量表达能够体现出源代码中的结构性特征,因此本发明方案向量表达和学习模型能够很好地描述和提取源代码中的结构性特征,具有预测精度高,误报率低的优点。
此外,训练过程中所采用的历史软件漏洞信息不仅包括待预测软件的漏洞实例,还包括与待预测软件同一类型软件的漏洞实例,保证漏洞信息覆盖全面。
附图说明
图1为现有的采用机器学习方法进行软件漏洞预测的示意图;
图2为本发明流程图;
图3为本发明一实例中某一函数的抽象语法树。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种利用深度学习预测软件安全漏洞的方法,其基本思想是:从软件源代码模块的抽象语法树中提取节点的向量表达,作为软件源代码模块的度量特征。再利用能够处理树形二维向量的卷积神经网络深度学习模型作为机器学习模型进行训练和预测。由于节点之间的关系,以及节点的向量表达能够体现出源代码中的结构性特征,因此本发明方案向量表达和学习模型能够很好地描述和提取源代码中的结构性特征,具有预测精度高,误报率低的优点。
图1为本发明利用深度学习预测软件安全漏洞的方法的流程图,如图1所示,该方法包括如下步骤:
步骤一、确定分析对象的粒度(被分析的软件源代码模块的大小),将被分析软件划分为多个软件源代码模块。
确定软件的分析粒度,也就是确定被分析的软件源代码模块的大小。软件源代码模块可以是一条语句、一个函数、一个方法、一个类、一个包、一个模块、一个文件或者任意一个子系统,根据实际需要确定。目前的实际情况是选择一个文件作为分析粒度比较常见。
其中,在步骤一~七训练过程中,被分析软件采用与待预测软件属于同一类型的软件。所述的同一类型是指编程语言相同、编程风格相似、软件功能类似等。优选地,如果被分析软件与后续待预测软件属于同一系列版本(例如同一软件的版本1.2和版本2.0),其预测效果最好。
步骤二、建立软件历史漏洞库
针对被分析的软件,从两个方面建立该软件的历史漏洞库。
(1)从公开的软件漏洞库中搜集所有该软件的漏洞实例:包括漏洞类型以及形成该漏洞的源代码。
(2)从公开的软件漏洞库中收集与该软件同一类型(编程语言相同、编程风格相似、软件功能类似等)软件的漏洞实例:包括漏洞类型以及形成该漏洞的源代码。
步骤三、确定被分析软件中各软件源代码模块的漏洞标签。
在步骤一和步骤二的基础上确定各软件源代码模块的漏洞标签:针对步骤一中确定的每个软件源代码模块,如果该模块包含了步骤二中获得的存在漏洞的代码,则该软件源代码模块的漏洞标签为1,否则为0。
步骤四、建立被分析软件中各软件源代码模块的抽象语法树。
抽象语法树(abstract syntax tree,AST)是源代码的抽象语法结构的树状表现形式,每个节点表示源代码中的一种结构,节点之间的边表示推导关系。建立抽象语法树的过程为常规技术手段,这里不详述。
步骤五、建立抽象语法树节点的向量表达。
设节点x的向量为Vec(x),Vec(x)∈RT,R表示实数域,T表示Vec(x)的维度,其大小根据具体需要而定。
对抽象语法树中的每个非叶子节点p进行向量表达,具体为:
针对AST中一个非叶子节点p,设p的直接子节点为c1,c2,…,cn,它们的向量表示分别为Vec(p),Vec(c1),…,Vec(cn),根据AST中父节点与子节点之间的结构关系,按照一层神经网络的思路,将该结构关系量化为:
Vec(p)≈tanh(∑iliWi·Vgc(ci)+b)
其中,i=1,2,…,n;Wi∈RT×T是节点ci的权矩阵;b∈RT是设定的偏置项;li=(ci的叶子节点数量)/(p的叶子节点数量),为各子节点的相对重要因子,tanh()为激活函数。上式中,除了li均为未知量。
为了使得Vec(p),Vec(c1),…,Vec(cn)之间满足上述定量关系,使用如下训练方法确定Vec(p),Vec(c1),…,Vec(cn)的值:
设Vec(p)与tanh(∑iliWi·Vec(ci)+b)的差异为d,采用欧几里得距离描述:
在训练过程中,为了避免陷入全0状态,引入带有负采样的梯度下降法进行训练。
设dc是采用负样本之后的距离,训练目标为使得dc至少和d+△一样大(△为裕度,通常设置为1),则对于任一训练样本y(i)及其负样本yc (i),误差函数为:
训练目标为
其中,N为训练样本数量。
训练从AST的最底层节点开始,采用梯度下降法达到训练目标。
当针对某个软件源代码模块训练完成后,获得该模块中所有节点的向量表达Vec(x)。不同模块中可能含有的节点是相同的,则在对树中的后续软件源代码模块进行训练时,对于已经训练好的节点,其初始值可以采用训练好的节点值,进一步进行训练。则,当针对某个软件项目的所有软件源代码模块训练完成后,就可以得到了W、b以及各个节点的最终向量表达Vec(x)。
经过上述步骤已经得到了训练样本,训练样本中的输入部分为提取的软件源代码模块的各节点向量表达,理想输出为步骤三得到的漏洞标签。
步骤六、建立针对抽象语法树结构的深度学习模型。
在步骤五得到的节点的向量表示的基础上,将这些向量作为输入,建立卷积神经网络深度学习模型,模型如图3所示。
(1)卷积层
卷积层对输入向量进行卷积运算,提取特征,其核心是定义卷积运算的算子,即卷积神经网络的卷积核。卷积核实质为特征检测器,通过定义不同的卷积核检测出不同的所需的特征。
设卷积核的窗口大小为m,也就是一次输入的节点向量为m个,设为Vec(x1),…,Vec(xm),则卷积核的输出y即为检测到的特征。例如向量包含元素s1、s2、s3、s4、s5等等,则如果m=3,则第一次输入s1、s2、s3,第二次输入s2、s3、s4,第三次输入s3、s4、s5,依次类推。
(2)池化层
池化层采用了全连接方式,将多个特征检测器检测到的特征进行了综合表示。设池化层的输出有K个,输出表示为Z=(z1,z2,…,zK)。
(3)全连接层
将池化层得到的特征Z采用全连接方式连接到此层,设该层的输出有M个,输出表示为G=(g1,g2,…,gM)。
(4)输出层
输出层采用Softmax函数将全连接层的输出归一化。该输出即为模块具有漏洞的概率,如果该值大于0.5,认为模块具有漏洞,标签为1,否则没有漏洞,标签为0。
步骤七、训练漏洞预测模型。
将步骤五中得到的模块的各节点向量表达作为深度学习模型的输入,将步骤三中得到的漏洞标签作为深度学习模型的输出,对步骤六中的深度学习模型采用梯度下降法进行训练。
步骤八、将预测模型应用于新的软件源代码模块
将步骤七中训练好的预测模型应用于新的软件。
本步骤中,首先按照已经确定好的粒度,将软件划分为软件源代码模块。针对软件源代码模块,生成抽象语法树,根据抽象语法树的节点名称可以从步骤五中已经形成的向量中提取相同节点名称的向量,将该向量输入到预测模型,模型运行的输出即为该软件源代码模块是否有漏洞的标签。采用这种方案可以逐一确定待预测软件中哪个部分可能会出现漏洞。
下面举一个实例。
步骤一、针对某个软件项目,确定分析粒度是源代码中的一个function(函数),然后进行软件划分,获得源代码模块。
步骤二、建立软件历史漏洞库
步骤三、确定被分析的软件源代码模块的漏洞标签
在步骤一和步骤二的基础上确定该软件项目中每个function的漏洞标签:针对步骤一中确定的每个function,如果该function包含了步骤二中的存在漏洞的代码,则该function的漏洞标签为1,否则为0。
步骤四、建立每个function的抽象语法树。
以以下函数为例,其对应的抽象语法树如图3所示:
double doubles(double doublee){
return 2*double
}
步骤五、建立抽象语法树节点的向量表达。
本实例中,节点向量的维度T=50。步骤四中的AST有14个节点,其向量如下表所示。
序号 层级 节点名称 向量表示
1 0 0FuncDef (0.191,0.332,…,0,786,)
2 1 1Dec1 (0.001,0.000,…,0,645,)
3 1 1Compound (0.876,0.074,…,0,343,)
4 2 2FuncDec1 (0.007,0.343,…,0,234,)
5 2 2Return (0.061,0.234,…,0,387,)
6 3 3ParameterList (0.401,0.543,…,0,345,)
7 3 3TypeDec1 (0.453,0.771,…,0,756,)
8 3 3BinaryOp (0.276,0.843,…,0,976,)
9 4 4Dec1 (0.123,0.111,…,0,233,)
10 4 4IdentifierType (0.267,0.000,…,0,455,)
11 4 4Constant (0.000,0.860,…,0,223,)
12 4 4ID (0.000,0.214,…,0,193,)
13 5 5TypeDec1 (0.230,0.151,…,0,120,)
14 6 6IdentifierType (0.123,0.123,…,0,086,)
步骤六、建立针对抽象语法树结构的深度学习模型。
在步骤五得到的节点的向量表示的基础上,将这些向量作为输入,建立卷积神经网络深度学习模型。本例中,
(1)卷积层
定义3个卷积核,L=3。
卷积核的窗口大小为3,m=3。
(2)池化层
池化层的输出有20个,K=20。
(3)全连接层
全局连接层的输出有2个,M=2,表示两个类型,有漏洞和无漏洞。
(4)输出层
输出层采用Softmax函数将全连接层的两个输出归一化。
该输出即为模块具有漏洞的概率,如果该值大于0.5,我们认为模块具有漏洞,标签为1,否则没有漏洞,标签为0。
步骤七、训练漏洞预测模型
将步骤五中得到的向量作为深度学习模型的输入,将步骤三中得到的标签作为深度学习模型的输出,对步骤六中的深度学习模型采用梯度下降法进行训练。
步骤八、将预测模型应用于新的软件模块
首先生成新的软件模块的抽象语法树,根据抽象语法树的节点名称可找到在步骤五中已经形成的向量,将向量输入到预测模型,模型运行的输出即为该模块是否有漏洞的标签。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种利用深度学习预测软件安全漏洞的方法,其特征在于,包括:
步骤一、将与待预测软件属于同一类型的软件作为被分析软件,根据选定粒度将所述被分析软件划分为软件源代码模块,建立软件源代码模块的抽象语法树;
步骤二、针对各软件源代码模块,建立其抽象语法树节点的向量表达;
步骤三、以软件源代码模块的各节点向量表达为输入、软件源代码模块是否包含漏洞为输出,组建训练样本,对卷积神经网络深度学习模型进行训练;
步骤四、对待预测软件进行安全漏洞预测时,根据所述选定粒度划分软件源代码模块;选择训练好的卷积神经网络深度学习模型,将待预测软件源代码模块的抽象语法树的节点向量表达作为模型输入,模型输出即为软件源代码模块有无漏洞的安全漏洞预测结果。
2.如权利要求1所述的方法,其特征在于,步骤一所述选定粒度为:一条语句、一个函数、一个方法、一个类、一个包、一个模块、一个文件或者任意一个子系统。
3.如权利要求1所述的方法,其特征在于,步骤二所述建立抽象语法树节点的向量表达为:
步骤21、定义抽象语法树中父子节点之间的结构量化表达式;
设节点x的向量为Vec(x),Vec(x)∈RT,T表示设定的Vec(x)的维度,R表示实数域;针对抽象语法树中的每个非叶子节点p,设节点p的直接子节点为c1,c2,…,cn,它们的向量表示分别为Vec(p),Vec(c1),…,Vec(cn),根据抽象语法树中父节点与子节点之间的结构关系,将节点p的结构关系量化为:
Vec(p)≈tanh(∑iliWi·Vec(ci)+b)
其中,i=1,2,…,n;Wi∈RT×T是节点ci的权矩阵;b∈RT是设定的偏置项;li=(子节点ci的叶子节点数量)/(节点p的叶子节点数量),作为子节点ci的相对重要因子,tanh()为激活函数;
步骤22、采用带有负采样的梯度下降法对各结构关系量化表达进行训练;当遍历完软件的所有软件源代码模块后,得到各个节点的向量表达Vec(x)。
4.如权利要求1所述的方法,其特征在于,步骤三软件源代码模块是否包含漏洞为输出是根据历史软件漏洞信息确定的。
5.如权利要求4所述的方法,其特征在于,所述历史软件漏洞信息包括:从公开的软件漏洞库中搜集待预测软件的漏洞实例,以及与待预测软件同一类型软件的漏洞实例。
6.如权利要求1所述的方法,其特征在于,在步骤四中,待预测软件源代码模块的抽象语法树的节点向量表达的获取方式为:
生成待预测的软件源代码模块的抽象语法树,根据抽象语法树中各节点名称,从步骤二已经建立的向量表达中进行提取,获得待预测软件源代码模块的抽象语法树的节点向量表达。
7.如权利要求1所述的方法,其特征在于,所述待预测软件与所述被分析软件属于系列版本。
CN201811086306.8A 2018-09-18 2018-09-18 一种利用深度学习预测软件安全漏洞的方法 Pending CN109214191A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811086306.8A CN109214191A (zh) 2018-09-18 2018-09-18 一种利用深度学习预测软件安全漏洞的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811086306.8A CN109214191A (zh) 2018-09-18 2018-09-18 一种利用深度学习预测软件安全漏洞的方法

Publications (1)

Publication Number Publication Date
CN109214191A true CN109214191A (zh) 2019-01-15

Family

ID=64984545

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811086306.8A Pending CN109214191A (zh) 2018-09-18 2018-09-18 一种利用深度学习预测软件安全漏洞的方法

Country Status (1)

Country Link
CN (1) CN109214191A (zh)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119627A (zh) * 2019-05-22 2019-08-13 刘士刚 自动化人工智能漏洞检测系统
CN110162245A (zh) * 2019-04-11 2019-08-23 北京达佳互联信息技术有限公司 图形操作的分析方法、装置、电子设备及存储介质
CN110232280A (zh) * 2019-06-20 2019-09-13 北京理工大学 一种基于树结构卷积神经网络的软件安全漏洞检测方法
CN110543419A (zh) * 2019-08-28 2019-12-06 杭州趣链科技有限公司 一种基于深度学习技术的智能合约代码漏洞检测方法
CN110554868A (zh) * 2019-09-11 2019-12-10 北京航空航天大学 一种软件复用代码检测方法及系统
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN111143219A (zh) * 2019-12-27 2020-05-12 中国信息安全测评中心 一种基于人工智能的软件代码缺陷识别方法及相关装置
CN111611586A (zh) * 2019-02-25 2020-09-01 上海信息安全工程技术研究中心 基于图卷积网络的软件漏洞检测方法及装置
CN111767216A (zh) * 2020-06-23 2020-10-13 江苏工程职业技术学院 一种可缓解类重叠问题的跨版本深度缺陷预测方法
CN112115476A (zh) * 2020-08-06 2020-12-22 扬州大学 基于lstm的漏洞自动分类方法、系统和计算机设备
CN112131120A (zh) * 2020-09-27 2020-12-25 北京软安科技有限公司 一种源代码缺陷检测方法及装置
CN112381280A (zh) * 2020-11-06 2021-02-19 北京航空航天大学 一种基于人工智能的算法预测方法
CN112417448A (zh) * 2020-11-15 2021-02-26 复旦大学 一种基于api关系图谱的恶意软件检测模型抗老化增强方法
CN112541180A (zh) * 2020-12-16 2021-03-23 北京理工大学 一种基于语法特征和语义特征的软件安全漏洞检测方法
CN113378178A (zh) * 2021-06-21 2021-09-10 大连海事大学 一种基于深度学习的图自信学习软件漏洞检测方法
CN113608747A (zh) * 2021-08-18 2021-11-05 南京航空航天大学 一种基于图卷积神经网络的软件缺陷预测方法及终端
CN115831339A (zh) * 2023-02-21 2023-03-21 四川大学华西医院 基于深度学习的医疗系统风险管控事前预测方法、系统
CN116089262A (zh) * 2022-11-23 2023-05-09 北京东方通科技股份有限公司 一种基于代码动态分析的代码安全扫描系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104809069A (zh) * 2015-05-11 2015-07-29 中国电力科学研究院 一种基于集成神经网络的源代码漏洞检测方法
CN104850493A (zh) * 2015-04-24 2015-08-19 百度在线网络技术(北京)有限公司 一种检测源代码漏洞的方法和装置
CN107220180A (zh) * 2017-06-08 2017-09-29 电子科技大学 一种基于神经网络语言模型的代码分类方法
CN108108622A (zh) * 2017-12-13 2018-06-01 上海交通大学 基于深度卷积网络和控制流图的漏洞检测系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104850493A (zh) * 2015-04-24 2015-08-19 百度在线网络技术(北京)有限公司 一种检测源代码漏洞的方法和装置
CN104809069A (zh) * 2015-05-11 2015-07-29 中国电力科学研究院 一种基于集成神经网络的源代码漏洞检测方法
CN107220180A (zh) * 2017-06-08 2017-09-29 电子科技大学 一种基于神经网络语言模型的代码分类方法
CN108108622A (zh) * 2017-12-13 2018-06-01 上海交通大学 基于深度卷积网络和控制流图的漏洞检测系统

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111611586B (zh) * 2019-02-25 2023-03-31 上海信息安全工程技术研究中心 基于图卷积网络的软件漏洞检测方法及装置
CN111611586A (zh) * 2019-02-25 2020-09-01 上海信息安全工程技术研究中心 基于图卷积网络的软件漏洞检测方法及装置
CN110162245A (zh) * 2019-04-11 2019-08-23 北京达佳互联信息技术有限公司 图形操作的分析方法、装置、电子设备及存储介质
CN110119627A (zh) * 2019-05-22 2019-08-13 刘士刚 自动化人工智能漏洞检测系统
CN110232280A (zh) * 2019-06-20 2019-09-13 北京理工大学 一种基于树结构卷积神经网络的软件安全漏洞检测方法
CN110232280B (zh) * 2019-06-20 2021-04-13 北京理工大学 一种基于树结构卷积神经网络的软件安全漏洞检测方法
WO2021037196A1 (zh) * 2019-08-28 2021-03-04 杭州趣链科技有限公司 智能合约代码漏洞检测方法、装置、计算机设备和存储介质
CN110543419A (zh) * 2019-08-28 2019-12-06 杭州趣链科技有限公司 一种基于深度学习技术的智能合约代码漏洞检测方法
CN110543419B (zh) * 2019-08-28 2021-09-03 杭州趣链科技有限公司 一种基于深度学习技术的智能合约代码漏洞检测方法
CN110554868B (zh) * 2019-09-11 2020-07-31 北京航空航天大学 一种软件复用代码检测方法及系统
CN110554868A (zh) * 2019-09-11 2019-12-10 北京航空航天大学 一种软件复用代码检测方法及系统
CN110597735B (zh) * 2019-09-25 2021-03-05 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN110597735A (zh) * 2019-09-25 2019-12-20 北京航空航天大学 一种面向开源软件缺陷特征深度学习的软件缺陷预测方法
CN111143219A (zh) * 2019-12-27 2020-05-12 中国信息安全测评中心 一种基于人工智能的软件代码缺陷识别方法及相关装置
CN111767216A (zh) * 2020-06-23 2020-10-13 江苏工程职业技术学院 一种可缓解类重叠问题的跨版本深度缺陷预测方法
CN112115476A (zh) * 2020-08-06 2020-12-22 扬州大学 基于lstm的漏洞自动分类方法、系统和计算机设备
CN112115476B (zh) * 2020-08-06 2023-10-24 扬州大学 基于lstm的漏洞自动分类方法、系统和计算机设备
CN112131120B (zh) * 2020-09-27 2022-09-30 北京智联安行科技有限公司 一种源代码缺陷检测方法及装置
CN112131120A (zh) * 2020-09-27 2020-12-25 北京软安科技有限公司 一种源代码缺陷检测方法及装置
CN112381280A (zh) * 2020-11-06 2021-02-19 北京航空航天大学 一种基于人工智能的算法预测方法
CN112381280B (zh) * 2020-11-06 2023-01-24 北京航空航天大学 一种基于人工智能的算法预测方法
CN112417448A (zh) * 2020-11-15 2021-02-26 复旦大学 一种基于api关系图谱的恶意软件检测模型抗老化增强方法
CN112417448B (zh) * 2020-11-15 2022-03-18 复旦大学 一种基于api关系图谱的恶意软件检测模型抗老化增强方法
CN112541180A (zh) * 2020-12-16 2021-03-23 北京理工大学 一种基于语法特征和语义特征的软件安全漏洞检测方法
CN112541180B (zh) * 2020-12-16 2022-09-13 北京理工大学 一种基于语法特征和语义特征的软件安全漏洞检测方法
CN113378178B (zh) * 2021-06-21 2023-08-22 大连海事大学 一种基于深度学习的图自信学习软件漏洞检测方法
CN113378178A (zh) * 2021-06-21 2021-09-10 大连海事大学 一种基于深度学习的图自信学习软件漏洞检测方法
CN113608747A (zh) * 2021-08-18 2021-11-05 南京航空航天大学 一种基于图卷积神经网络的软件缺陷预测方法及终端
CN113608747B (zh) * 2021-08-18 2024-04-02 南京航空航天大学 一种基于图卷积神经网络的软件缺陷预测方法及终端
CN116089262A (zh) * 2022-11-23 2023-05-09 北京东方通科技股份有限公司 一种基于代码动态分析的代码安全扫描系统及方法
CN115831339A (zh) * 2023-02-21 2023-03-21 四川大学华西医院 基于深度学习的医疗系统风险管控事前预测方法、系统

Similar Documents

Publication Publication Date Title
CN109214191A (zh) 一种利用深度学习预测软件安全漏洞的方法
CN108446540B (zh) 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
CN110232280B (zh) 一种基于树结构卷积神经网络的软件安全漏洞检测方法
CN103927302B (zh) 一种文本分类方法和系统
CN107122340B (zh) 一种基于同义词分析的科技项目申报书的相似度检测方法
CN107967208A (zh) 一种基于深度神经网络的Python资源敏感缺陷代码检测方法
CN109670306A (zh) 基于人工智能的电力恶意代码检测方法、服务器及系统
CN109685647A (zh) 信贷欺诈检测方法及其模型的训练方法、装置和服务器
CN112579477A (zh) 一种缺陷检测方法、装置以及存储介质
CN106294038A (zh) 一种故障谱的生成、基于故障谱的检测方法和装置
Lin et al. Machine learning templates for QCD factorization in the search for physics beyond the standard model
CN116049831A (zh) 一种基于静态分析和动态分析的软件漏洞检测方法
CN101546290B (zh) 提高面向对象型软件中类阶层质量预测准确度的方法
CN109345007A (zh) 一种基于XGBoost特征选择的有利储层发育区预测方法
CN109799990A (zh) 源代码注释自动生成方法及系统
CN112733156A (zh) 基于代码属性图的软件脆弱性智能检测方法、系统及介质
CN112364352A (zh) 可解释性的软件漏洞检测与推荐方法及系统
CN115495755B (zh) 一种基于CodeBERT和R-GCN的源代码漏洞多分类检测的方法
CN110011990A (zh) 内网安全威胁智能分析方法
CN116643989A (zh) 一种采用图结构进行深层语义理解的缺陷预测方法
CN110399286A (zh) 一种基于独立路径的测试数据自动生成方法
CN110716957B (zh) 类案可疑对象智能挖掘分析方法
CN116150757A (zh) 一种基于cnn-lstm多分类模型的智能合约未知漏洞检测方法
CN117195220A (zh) 基于Tree-LSTM和BiLSTM的智能合约漏洞检测方法及系统
Nimmani et al. Neural network based integrated model for information retrieval

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190115