基于神经网络的代码分析方法及其装置、电子设备制造方法及图纸

技术编号:38489980 阅读:8 留言:0更新日期:2023-08-15 17:03
本发明专利技术公开了一种基于神经网络的代码分析方法及其装置、电子设备,涉及信息安全技术领域或其他相关领域,其中,该代码分析方法包括:接收目标程序的源代码,构建与所述目标程序的源代码对应的代码属性图;基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图;基于所述代码属性子图在所述源代码中提取特征张量,并对所述特征张量进行编码,得到代码张量编码;将所述代码张量编码输入至预设神经网络模型,输出所述目标程序的源代码中所述可疑漏洞的漏洞位置和漏洞类型。本发明专利技术解决了相关技术中代码分析过程中,分析效率低下的技术问题。分析效率低下的技术问题。分析效率低下的技术问题。

【技术实现步骤摘要】
基于神经网络的代码分析方法及其装置、电子设备


[0001]本专利技术涉及信息安全
,具体而言,涉及一种基于神经网络的代码分析方法及其装置、电子设备。

技术介绍

[0002]随着软件功能的日益强大,相应的程序代码越来越复杂,很难在设计开发中彻底消除程序代码中存在的所有漏洞或缺陷,若直接投产可能会对网络安全造成隐患,为避免软件安全漏洞问题,在投产前对软件的程序代码进行漏洞分析是十分重要的。
[0003]相关技术中,对软件的程序代码进行漏洞分析时还依赖于人工对程序的源代码进行分析,或者利用半自动化工具进行分析之后再由人工进行验收核对,由于目前程序的源代码中复杂的代码结构、繁多的封装函数和庞大的代码量,人工或自动化工具均难以捕捉代码元素与漏洞元素之间的关联关系,导致代码分析的误报率和漏报率高居不下,并且代码分析的效率比较低下。
[0004]针对上述的问题,目前尚未提出有效的解决方案。

技术实现思路

[0005]本专利技术实施例提供了一种基于神经网络的代码分析方法及其装置、电子设备,以至少解决相关技术中代码分析过程中,分析效率低下的技术问题。
[0006]根据本专利技术实施例的一个方面,提供了一种基于神经网络的代码分析方法,包括:接收目标程序的源代码,构建与所述目标程序的源代码对应的代码属性图;基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图,其中,所述可疑漏洞为所述源代码中疑似引起网络安全漏洞的代码段,所述预设切片原则至少包括:预设词法原则、预设路径原则;基于所述代码属性子图在所述源代码中提取特征张量,并对所述特征张量进行编码,得到代码张量编码,其中,所述特征张量指所述源代码中能对所述代码属性子图中的节点属性和关联关系进行描述的代码字段,所述代码张量编码用于表征所述代码属性子图中所有节点的节点属性和关联关系;将所述代码张量编码输入至预设神经网络模型,输出所述目标程序的源代码中所述可疑漏洞的漏洞位置和漏洞类型。
[0007]可选地,基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图的步骤,包括:基于所述预设词法原则,查找所述源代码中的可疑漏洞语句,将所述可疑漏洞语句在所述代码属性图中对应的节点标记为第一类可疑节点,基于所述第一类可疑节点以及各节点之间的第一依赖关系生成初始切片模板;基于所述预设路径原则,在所述代码属性图中标记第二类可疑节点,将所述第二类可疑节点以及各节点之间的第二依赖关系添加至所述初始切片模板,生成扩展切片模板;基于所述扩展切片模板对所述代码属性图进行切片,得到所述代码属性子图。
[0008]可选地,基于所述预设路径原则,在所述代码属性图中标记第二类可疑节点的步骤,包括:以所述第一类可疑节点为基点,获取所述代码属性图中每个其它节点到所述第一
类可疑节点之间经过节点最少的最短路径,并统计所述最短路径所经过的总节点数,其中,所述其它节点是指除所述第一类可疑节点之外的节点;比较所述总节点数与预设数量阈值,得到比较结果;在所述比较结果指示所述总节点数小于等于所述预设数量阈值的情况下,将所述总节点数对应的其它节点标记为所述第二类可疑节点。
[0009]可选地,在构建与所述目标程序的源代码对应的代码属性图之前,还包括:提取所述源代码中各代码结构中的变量名;获取变量名重写策略;基于所述变量名重写策略,采用预设编译器解析器重写所述源代码中的变量名。
[0010]可选地,在输出所述目标程序中的可疑漏洞的漏洞位置和漏洞类型之后,还包括:基于所述漏洞位置生成待测试代码镜像,基于所述漏洞类型生成测试用例集,其中,所述测试用例集中包含N个测试用例,N为大于等于1的整数;基于所述漏洞位置,将所述测试用例注入所述待测试代码镜像,运行所述待测试代码镜像;监测运行过程中所述测试用例是否覆盖漏洞路径以及所述待测试代码镜像是否正常运行,基于监测结果输出漏洞检测报告。
[0011]可选地,所述预设神经网络模型包括:输入层,接收所述代码张量编码;嵌入层,通过线性变换对所述代码张量编码进行降维处理;双向LSTM层,对降维后的所述代码张量编码进行双向分析,得到分析结果;注意力层,基于所述分析结果,计算所有降维后的所述代码张量编码的注意力权重,并将所述注意力权重标记到对应的所述代码张量编码上,输出标记后的所述代码张量编码;分类输出层,对标记后的所述代码张量编码进行特征分类,并输出分类结果,其中,所述分类结果指示所述目标程序中的可疑漏洞的漏洞位置和漏洞类型。
[0012]可选地,所述预设神经网络模型是通过以下方法得到的:获取M份历史代码程序的源代码以及漏洞检测数据集中预先记录的每份所述历史代码程序的历史代码漏洞,并确定每份所述历史代码漏洞的漏洞类型以及漏洞所在位置的标签,得到所述历史代码漏洞的漏洞信息,其中,M为大于等于1的整数;重写所述历史代码程序的源代码中的变量名,并构建所述历史代码程序的源代码对应的历史代码属性图;基于所述预设切片原则对所述历史代码属性图进行切片,输出历史代码属性子图,并基于所述历史代码属性子图在所述历史代码程序的源代码中提取历史特征张量,对所述历史特征张量进行编码,得到历史代码张量编码;将所述历史代码张量编码输入至初始神经网络模型进行分析,得到历史代码程序分析结果,其中,所述历史代码程序分析结果至少包括:历史代码漏洞的漏洞类型、历史代码漏洞的漏洞位置标签;比较所述历史代码程序分析结果与所述历史代码漏洞的的漏洞信息之间的相似度,在所述相似度小于预设相似度阈值的情况下,更新所述初始神经网络模型各网络层的参数;对所述初始神经网络模型进行迭代训练,直至所述相似度大于等于所述预设相似度阈值,得到所述预设神经网络模型。
[0013]可选地,所述漏洞检测数据集是通过以下方法得到的:获取第一类安全漏洞网站的漏洞信息以及第二类安全漏洞网站的漏洞信息,其中,所述漏洞信息包括下述至少之一:漏洞种类、攻击向量、涉及产品组件以及版本、代码是否开源;将所述第一类安全漏洞网站的漏洞信息以及所述第二类安全漏洞网站的漏洞信息汇总至预设漏洞信息数据库;提取所述预设漏洞信息数据库中涉及开源代码的漏洞的版本更新信息、漏洞补丁、漏洞位置以及位置标签;将所述开源代码的漏洞的版本更新信息、漏洞补丁、漏洞位置以及位置标签汇总至漏洞代码数据库中,形成所述漏洞检测数据集。
[0014]可选地,基于所述漏洞位置生成待测试代码镜像的步骤,包括:基于所述漏洞位置确定所述可疑漏洞的触发调用路径;在所述可疑漏洞的触发调用路径上进行插桩处理,并对插桩后的源代码进行编译链接,生成所述待测试代码镜像。
[0015]可选地,基于所述漏洞类型生成测试用例集的步骤,包括:调用预设测试用例库,其中,所述预设测试用例库预先存储不同漏洞类型的代码漏洞与对应的测试用例之间的映射关系;基于所述预设测试用例库,确定与每个所述漏洞类型对应的测试用例,采用预设遗传算法对所述测试用例进行随机变异,生成所述目标程序的源代码的所述测试用例集,并记录每个测试用例覆盖的漏洞路径。
[0016]根据本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于神经网络的代码分析方法,其特征在于,包括:接收目标程序的源代码,构建与所述目标程序的源代码对应的代码属性图;基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图,其中,所述可疑漏洞为所述源代码中疑似引起网络安全漏洞的代码段,所述预设切片原则至少包括:预设词法原则、预设路径原则;基于所述代码属性子图在所述源代码中提取特征张量,并对所述特征张量进行编码,得到代码张量编码,其中,所述特征张量指所述源代码中能对所述代码属性子图中的节点属性和关联关系进行描述的代码字段,所述代码张量编码用于表征所述代码属性子图中所有节点的节点属性和关联关系;将所述代码张量编码输入至预设神经网络模型,输出所述目标程序的源代码中所述可疑漏洞的漏洞位置和漏洞类型。2.根据权利要求1所述的代码分析方法,其特征在于,基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图的步骤,包括:基于所述预设词法原则,查找所述源代码中的可疑漏洞语句,将所述可疑漏洞语句在所述代码属性图中对应的节点标记为第一类可疑节点,基于所述第一类可疑节点以及各节点之间的第一依赖关系生成初始切片模板;基于所述预设路径原则,在所述代码属性图中标记第二类可疑节点,将所述第二类可疑节点以及各节点之间的第二依赖关系添加至所述初始切片模板,生成扩展切片模板;基于所述扩展切片模板对所述代码属性图进行切片,得到所述代码属性子图。3.根据权利要求2所述的代码分析方法,基于所述预设路径原则,在所述代码属性图中标记第二类可疑节点的步骤,包括:以所述第一类可疑节点为基点,获取所述代码属性图中每个其它节点到所述第一类可疑节点之间经过节点最少的最短路径,并统计所述最短路径所经过的总节点数,其中,所述其它节点是指除所述第一类可疑节点之外的节点;比较所述总节点数与预设数量阈值,得到比较结果;在所述比较结果指示所述总节点数小于等于所述预设数量阈值的情况下,将所述总节点数对应的其它节点标记为所述第二类可疑节点。4.根据权利要求1所述的代码分析方法,其特征在于,在构建与所述目标程序的源代码对应的代码属性图之前,还包括:提取所述源代码中各代码结构中的变量名;获取变量名重写策略;基于所述变量名重写策略,采用预设编译器解析器重写所述源代码中的变量名。5.根据权利要求1所述的代码分析方法,其特征在于,在输出所述目标程序中的可疑漏洞的漏洞位置和漏洞类型之后,还包括:基于所述漏洞位置生成待测试代码镜像,基于所述漏洞类型生成测试用例集,其中,所述测试用例集中包含N个测试用例,N为大于等于1的整数;基于所述漏洞位置,将所述测试用例注入所述待测试代码镜像,运行所述待测试代码镜像;监测运行过程中所述测试用例是否覆盖漏洞路径以及所述待测试代码镜像是否正常
运行,基于监测结果输出漏洞检测报告。6.根据权利要求1所述的代码分析方法,所述预设神经网络模型包括:输入层,接收所述代码张量编码;嵌入层,通过线性变换对所述代码张量编码进行降维处理;双向LSTM层,对降维后的所述代码张量编码进行双向分析,得到分析结果;注意力层,基于所述分析结果,计算所有降维后的所述代码张量编码的注意力权重,并将所述注意力权重标记到对应的所述代码张量编码上,输出标记后的所述代码张量编码;分类输出层,对标记后的所述代码张量编码进行特征分类,并输出分类结果,其中,所述分类结果指示所述目标程序中的可疑漏洞的漏洞位置和漏洞类型。7.根据权利要求1所述的代码分析方法,所述预设神经网络模型是通过以下方法得到的:获取M份历史代码程序的源代码以及漏洞检测数据集中预先记录的每份所述历史代码程序的历史代码漏洞,并确定每份所述历史代码漏洞的漏洞类型以及漏洞所在位置的标签,得到所述历史代码漏洞的漏洞...

【专利技术属性】
技术研发人员:庄沃霖曾炜李艺枫陈凌潇
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1