【技术实现步骤摘要】
基于seq2seq代码表示学习的细粒度漏洞检测方法
[0001]本专利技术涉及一种软件漏洞细粒度检测方法,具体涉及一种基于seq2seq代码表示学习的细粒度漏洞检测方法。
技术介绍
[0002]漏洞被定义为计算机系统中的安全缺陷,它不仅威胁到了系统本身,也使系统难以保障应用数据的机密性、完整性和可用性,并危及系统的安全。近年来,随着系统规模和复杂度的增加以及新技术的引入,软件漏洞发生的可能性不断上升。自动检测漏洞是减少漏洞的一个重要手段。然而,目前基于深度学习的漏洞检测研究大部分集中在文件、函数或片段等粗粒度级别上,即只能预测文件、函数或代码包含漏洞的可能性,在这种情形下,开发人员人工定位漏洞语句的难度较大,导致漏洞不能及时被修复。因此,研究语句级的细粒度漏洞检测方法,更有助于开发者理解并快速修复漏洞,也是目前漏洞检测研究的趋势。近几年,虽然也有少量关于细粒度漏洞检测方法的研究,然而其定位精度仍有待提高。漏洞信息分布的稀疏性和不连续性、漏洞语句间的上下文依赖性、漏洞特征的复杂性和隐蔽性都对细粒度的漏洞检测提出了挑战。
技术实现思路
[0003]本专利技术的目的是提供一种基于seq2seq代码表示学习的细粒度漏洞检测方法,该方法能够充分利用代码中的全局和局部语义信息,学习语句内和语句间的漏洞相关的特征,避免传统的基于深度学习分类模型对代码表示学习时难以捕获漏洞语句及其上下文之间的长依赖信息的问题,利用seq2seq模型对代码进行表示学习生成的语句向量表示序列,更适合语句级的细粒度漏洞检测。
[0 ...
【技术保护点】
【技术特征摘要】
1.一种基于seq2seq代码表示学习的细粒度漏洞检测方法,其特征在于所述方法包括如下步骤:步骤1:利用静态解析工具解析源代码,生成抽象语法树和程序依赖图;步骤2:利用抽象语法树提取源代码的漏洞候选关键节点作为切片准则,生成源代码的切片代码段,并对其进行标准化处理,得到命名标准化后的切片代码段;步骤3:使用seq2seq深度学习模型编码器中的语句编码网络对切片代码段语句内的token序列进行表示学习,生成包含局部语义信息的语句初级向量表示;步骤4:以步骤3中得到的每条语句的初级向量表示构成的语句序列作为输入,使用seq2seq深度学习模型编码器中的程序编码网络对语句序列进行表示学习,生成包含语句上下文信息的语句高级向量表示;步骤5:将步骤4中得到的语句高级向量表示构成的语句序列送入基于自注意力和文本注意力的双重注意力模块中,通过自注意力学习语句间的依赖关系,再通过文本注意力学习漏洞相关的全局语义信息;步骤6:将步骤5得到的漏洞相关的全局语义信息和步骤4中得到的语句高级向量表示构成的语句序列作为输入,送入seq2seq深度学习模型的解码器网络中学习语句间的长依赖信息,生成语句的最终向量表示;步骤7:将步骤6得到的每条语句最终向量表示送入由多层感知器MLP和softmax层构成的检测器网络得到该语句有无漏洞的预测结果,利用该语句的标签信息计算交叉熵损失函数,根据误差反向传播调整网络参数,直到损失值不再下降为止,训练结束;步骤8:用训练好的模型对代码进行语句级的细粒度漏洞检测。2.根据权利要求1所述的基于seq2seq代码表示学习的细粒度漏洞检测方法,其特征在于所述步骤3的具体步骤如下:步骤31:将切片代码段中的语句拆分成token,使用预训练好的word2vec词嵌入模型得到每个token的向量表示,组成token向量矩阵;步骤32:将步骤31生成的token向量矩阵送入由GRU实现的语句编码网络,学习得到每个token的隐藏向量表示,通过可学习的权重对所有token的隐藏向量表示进行加权求和,得到语句的初级向量表示。3.根据权利要求2所述的基于seq2seq代码表示学习的细粒度漏洞检测方法,其特征在于所述步骤32的具体计算公式如下:z=σ(W
z
·
w
t
+U
z
·
h
(t
‑
1)
+b
z
)r=σ(W
r
·
w
t
+U
r
·
h
(t
‑
1)
+b
r
)))其中,z和r分别代表更新门和重置门,σ为激活函数,w
t
表示语句中第t个token的初始向
量表示,h
t
和分别代表第t个token的隐藏状态和中间的暂时状态,W
z
、W
r
、W
h
、U
z
、U
r
、U
h
、U
t
是可学习的权重参数,b
z
、b
r
、b
h
为偏置项,x为语句向量表示,n为语句中token的总数。4.根据权利要求1所述的基于seq2seq代码表示学习的细粒度漏洞检测方法,其特征在于所述步骤4的具体步骤如下:步骤41:对切片代码段中语句的向量表示进行padding,得到由语句向量组成的初始化语句向量矩阵;步骤42:将步骤41生成的初始化语句向量矩阵,送入由BiGRU实现的程序编码网络,学习得到程序中语句的隐藏向量表示。5.根据权利要求4所述的基于seq2seq代码表示学习的细粒度漏洞检测方法,其特征在于所述步骤42的具体计算公式如下:于所述步骤42的具体计算公式如下:于所述步骤42的具体计算公式如下:其中,x
i
表示切片代码段中第i个语句的向...
【专利技术属性】
技术研发人员:苏小红,蒋远,郑伟宁,陶文鑫,王甜甜,
申请(专利权)人:哈尔滨工业大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。