买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明公布】一种基于语法特征和语义特征的软件安全漏洞检测方法_北京理工大学;鹏城实验室_202011488425.3 

申请/专利权人:北京理工大学;鹏城实验室

申请日:2020-12-16

公开(公告)日:2021-03-23

公开(公告)号:CN112541180A

主分类号:G06F21/57(20130101)

分类号:G06F21/57(20130101);G06F11/36(20060101);G06N3/04(20060101)

优先权:

专利状态码:有效-授权

法律状态:2022.09.13#授权;2021.04.09#实质审查的生效;2021.03.23#公开

摘要:本发明公开了一种基于语法特征和语义特征的软件安全漏洞检测方法。包括以下步骤:步骤1、确定检测对象的粒度;步骤2、建立软件历史漏洞库;步骤3、建立检测对象的抽象语法树;步骤4、对抽象语法树进行嵌入;步骤5、对检测对象软件源代码进行编译;步骤6、建立检测对象的程序依赖图;步骤7、对程序依赖图进行嵌入,步骤8、使用图卷积神经网络对AST的特征进行学习:步骤9、使用双向LSTM对PDG的特征进行学习;本发明的优越效果是:提高了检测模型的精度、准确率、召回率的性能指标;采用一种图神经网络直接对AST树形结构进行学习,因此不会丢失任何信息,基于图神经网络的特征直接提取方式能够极大提高模型的检测性能。

主权项:1.一种基于语法特征和语义特征的软件安全漏洞检测方法,其特征在于,包括以下步骤:步骤1、确定检测对象的粒度:检测对象的粒度是一个函数、一个文件、一个组件或者任意一段有关联关系的代码片段,根据实际的检测项目需要确定,检测项目的语言是CC++、Java、PHP;步骤2、建立软件历史漏洞库:从公开的软件漏洞库中搜集与检测软件项目编程语言相同的软件安全漏洞,建立针对语言类的漏洞样本库,样本大小为检测粒度大小,漏洞库表明了检测粒度大小的样本具有漏洞的情况,即每个样本是否具有漏洞和具有漏洞的类型和数量;使用公共漏洞数据库SARD数据集,JTS的版本为JTS-1.3,共包含246852个函数,具有漏洞的函数105244,占总样本的42%,通过直接分析文件名与函数名就能得到每个函数的漏洞有无的标签,也就是采用的漏洞标签是1和0,表示漏洞的有和无;步骤3、建立检测对象的抽象语法树:在步骤1的基础上,基于LLVM编译器对检测对象进行解析,基于编译器提供的第三方接口ClangLib,建立检测对象的抽象语法树;步骤4、对抽象语法树进行嵌入:在步骤3的基础上,针对得到的检测对象的抽象语法树,按照深度优先搜索算法对抽象语法树进行遍历,生成针对语法树节点的节点序列,针对步骤2中的所有样本,生成每个样本的抽象语法树,并生成每个抽象语法树的节点序列,基于步骤2的漏洞库中所有样本对应的抽象语法树的节点序列,使用word2vec嵌入算法对每个节点进行嵌入,得到节点的向量表示;步骤5、对检测对象软件源代码进行编译:在步骤1的基础上,基于LLVM编译器对检测对象进行编译,获取代码的中间表示;步骤6、建立检测对象的程序依赖图:在步骤5的基础上,基于代码的中间表示IR,通过LLVM提供的Pass框架,建立检测对象的程序依赖图;步骤7、对程序依赖图进行嵌入,在步骤6的基础上,针对得到的检测对象的PDG;步骤8、使用图卷积神经网络对AST的特征进行学习;步骤9、使用双向LSTM对PDG的特征进行学习:在步骤7的基础上,选取双向长短期记忆网络建立针对PDG语义特征的深度学习模型,BLSTM对时间序列输入具有好的学习能力,PDG为时间序列结构,选择BLSTM模型;使用的BLSTM包括四层:输入层、双向LSTM处理单元层、Attention层与全连接层;步骤10、建立针对语法特征和语义特征的融合模型,在步骤8和9的基础上,选择两层的全连接神经网络和softmax分类器建立融合模型,将步骤8和步骤9的输出作为全连接层的输入,全连接层的输出作为softmax的输入,Softmax的输出为漏洞的概率;步骤11、训练和测试检测模型;步骤12、将检测模型应用于新的软件模块,将步骤11中获得的检测模型应用于新的软件模块,首先建立新的软件模块的AST和PDG,转换为向量表示,将向量作为模型的输入,模型运行的输出即为新的软件模块具有漏洞的概率。

全文数据:

权利要求:

百度查询: 北京理工大学;鹏城实验室 一种基于语法特征和语义特征的软件安全漏洞检测方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。