【技术实现步骤摘要】
基于GGNN和分层注意力网络的Java漏洞检测定位方法
[0001]本专利技术涉及软件检测
,特别是涉及一种基于深度学习的Java漏洞静态检测方法。
技术介绍
[0002]随着软件数量的迅猛增加和开源软件OSS的广泛利用,软件的漏洞数量和漏洞的影响也在日益增加和扩大。软件漏洞会对计算机的安全运行产生潜在的威胁,并给人们和社会带来巨大的经济损失和严重的信息泄露等问题,已经出现的“Heartbleed”漏洞就是鲜明的例子。有效缓解软件漏洞问题的方法是利用各种手段尽早在软件发布前将可能存在的漏洞检测出来。
[0003]近年来,随着机器学习的研究突破,许多研究尝试利用机器学习技术来自动检测漏洞,以减少人工劳动量。大多数利用机器学习技术进行检测的方法归为静态检测技术,因为它们大多不需要源代码执行,而只需模型对源码或编译后的二进制文件进行静态特征学习。传统的机器学习方法仍需要进行特征工程操作,即人工定义特征,这是十分耗时和复杂的工作,且定义的特征是客观的和特定于任务的。
[0004]当前流行的基于机器学习的漏洞检测 ...
【技术保护点】
【技术特征摘要】
1.一种基于GGNN和分层注意力网络的Java漏洞检测定位方法,其特征在于,该方法具体包括以下步骤:步骤1、构造漏洞数据集;步骤2、数据集预处理,具体描述如下:步骤2.1、生成源代码属性图CPG,所述代码属性图CPG由抽象语法树AST、控制流图CFGCFG和数据流图DFG构成;步骤2.2、嵌入CPG图,即使用Word2Vec嵌入CPG图的源代码token以表示源代码的语义信息;步骤3、漏洞检测定位模型设计与训练,具体过程描述如下:将训练样本集定义为((c
i
,y
i
)|c
i
∈ζ,y
i
∈γ),i∈{1,2,...,num_of_data},c
i
表示第i个Method代码,y
i
表示第i个样本的标签,ζ表示Method代码集合,γ={0,1}
n
表示数据的标签集,0表示非漏洞,1表示存在漏洞;训练集第i个训练样本的图嵌入表示为g
i
(V,X,A)∈ψ,ψ表示代码的CPG图嵌入集合,将训练集第i个训练样本的图嵌入表示如下:g
i
(V,X,A)=EMB(c
i
)其中,EMB()表示CPG图嵌入操作,V表示样本所有的结点,X表示所有结点的初始向量,A表示CPG图嵌入的邻接矩阵;学习一个从ψ到γ的一个映射f:ψ
→
γ来预测一个Method是否包含漏洞,由下式的最小化二分类交叉熵函数表示:其中,L(
·
)表示交叉熵损失函数,λ(ω(f))表示防止过拟合的惩罚项,f表示学习的模型;在得到一个图嵌入g
i
(V,X,A)后,得到每个结点在输入GGNN前的初始状态表达式如下:其中,
⊥
表示转置,x
j
表示每个结点j的初始向量,z表示结点的初始特征;在训练时,GGNN迭代T个时间步以使结点聚集邻域内结点的信息、并更新结点自身的状态,在每个时间步t<=T,每一种类的子图p的结点j的状态a
j,p
通过与结点j在子图p相连接的结点信息计算得到,表达式如下:其中,表示GGNN的权重矩阵,b表示偏差项,A
p
表示子图p的邻接矩阵,表示m个结点经过GNN后最后的状态;CPG的每个结点的信息表达式如下:其中,AGG()表示实际的综合方法;
GGNN之后通过门控循环单元GRU获得下一个时间步的结点状态:步骤3.1、数据划分与模型搭建确定训练集,其余作为测试集;使用Pytorch深度学习框架搭建漏洞检测定位模型,使用Deep Graph Library的内置库GatedGraphConv实现GGNN网络;设置单词级和语句级注意力层;所述漏洞检测定位模型包括编码端和解码端;步骤3.2、编码端生成CPG高级抽象:在经过编码端GGNN的信息聚集、更新后,CPG图的每个结点都包含着源代码的高级抽象信息,接下来就是进行图级的分类预测,如下式所示:其中,表示结点集V最终的状态矩阵,表达式如下:步骤3.3、解码端为分层注意力网络,由AST序列编码器、AST级注意力层、CFG序列编码器、CFG级注意力层和分类层组成;首先按照一定规则序列化所有结点,然后...
【专利技术属性】
技术研发人员:刘旭生,陈森,徐斌,李晓红,闫国庆,王俊杰,
申请(专利权)人:天津大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。