【技术实现步骤摘要】
一种基于深度学习的代码漏洞检测方法及装置
本专利技术涉及计算机
,特别是涉及一种基于深度学习的代码漏洞检测方法及装置。
技术介绍
漏洞是指系统中存在的一些功能性或安全性的逻辑缺陷,由于种种原因,漏洞的存在不可避免,主动发掘并分析系统安全漏洞,对网络攻防战具有重要的意义。现有技术在进行漏洞检测时,先获取已知漏洞代码及对应的补丁代码,补丁代码为修复漏洞代码的代码,然后利用切片技术对该漏洞代码及补丁代码进行切分,得到与漏洞特征相关的切片及含有补丁信息的切片,切片技术是一种用于分解程序的程序分析技术,再对与漏洞特征相关的切片及含有补丁信息的切片进行归一化处理,归一化处理具体包括变量名归一化、变量类型归一化以及函数名调用归一化,利用哈希算法及TF-IDF算法将经过归一化处理后的与漏洞特征相关的切片及含有补丁信息的切片映射为特征向量,得到漏洞特征向量及补丁特征向量,之后利用余弦相似度计算公式计算待测代码的特征向量与漏洞特征向量的相似度,将结果按照相似度排序形成候选漏洞结果,再将候选结果中的待测代码的特征向量与补丁特 ...
【技术保护点】
1.一种基于深度学习的代码漏洞检测方法,其特征在于,所述方法包括:/n获取样本代码及待检测代码;/n利用预设关键词提取所述样本代码中的漏洞特征信息;/n根据所述漏洞特征信息生成漏洞特征样本向量;/n生成待检测特征向量,其中,所述待检测特征向量中携带有所述待检测代码中各代码行之间的逻辑关系信息;/n将所述漏洞特征样本向量以及所述待检测特征向量输入预先训练的双向长短时记忆神经网络,得到所述待检测特征向量的漏洞信息,其中,所述双向长短时记忆神经网络是根据所述漏洞特征样本向量以及非漏洞特征样本向量训练得到的,所述漏洞信息包括是否存在漏洞、漏洞类型、漏洞位置以及漏洞危害程度信息。/n
【技术特征摘要】
1.一种基于深度学习的代码漏洞检测方法,其特征在于,所述方法包括:
获取样本代码及待检测代码;
利用预设关键词提取所述样本代码中的漏洞特征信息;
根据所述漏洞特征信息生成漏洞特征样本向量;
生成待检测特征向量,其中,所述待检测特征向量中携带有所述待检测代码中各代码行之间的逻辑关系信息;
将所述漏洞特征样本向量以及所述待检测特征向量输入预先训练的双向长短时记忆神经网络,得到所述待检测特征向量的漏洞信息,其中,所述双向长短时记忆神经网络是根据所述漏洞特征样本向量以及非漏洞特征样本向量训练得到的,所述漏洞信息包括是否存在漏洞、漏洞类型、漏洞位置以及漏洞危害程度信息。
2.根据权利要求1所述的方法,其特征在于,所述提取所述样本代码中的漏洞特征信息的步骤,包括:
从所述样本代码中获取包含所述预设关键词的第一样本代码,并将所述预设关键词所在的代码行作为该第一样本代码的可疑漏洞触发点;
对所述第一样本代码进行分析,得到数据流图DFD和控制流图CFG,所述DFD和CFG的开始部分为所述第一样本代码开始部分,结束部分为所述可疑漏洞触发点,所述DFD用于表示所述可疑漏洞触发点中的变量的流动情况,所述CFG用于表示所述第一样本代码控制流的结构;
在所述DFD和所述CFG中提取漏洞代码片段,所述漏洞代码片段为与所述漏洞触发点中的变量在所述DFD和所述CFG中传递过程相关的代码,其中,所述变量为所述漏洞触发点中与漏洞信息相关的关键词。
3.根据权利要求1所述的方法,其特征在于,所述根据所述漏洞特征信息生成漏洞特征样本向量的步骤,包括:
将所述漏洞代码片段转换为漏洞字节码;
将所述漏洞字节码进行切分,得到漏洞符号特征向量,其中,所述漏洞符号特征向量以所述漏洞字节码中的不同的关键词为不同的维度生成;
利用预设的编码规则对所述漏洞符号特征向量进行编码,得到初始漏洞特征样本向量,其中,所述初始漏洞特征样本向量为数字特征向量;
根据预设的向量长度对所述初始漏洞特征样本向量进行处理,得到所述漏洞特征样本向量。
4.根据权利要求1所述的方法,其特征在于,所述生成待检测特征向量的步骤,包括:
将所述待检测代码转换为待检测字节码;
将所述待检测字节码进行切分,得到待检测符号特征向量,其中,待检测符号特征向量以待检测字节中的不同的关键词为不同的维度生成;
利用预设的编码规则对所述待检测符号特征向量进行编码,得到初始待检测特征向量,其中,所述待检测特征向量为数字特征向量;
根据预设的向量长度对所述初始待检测特征向量进行处理,得到所述待检测特征向量。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述长短时记忆神经网络的训练过程包括:
构建初始双向长短时记忆神经网络,其中,所述初始双向长短时记忆...
【专利技术属性】
技术研发人员:李小勇,郭宁,高雅丽,尹慧,苑洁,
申请(专利权)人:北京邮电大学,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。