【技术实现步骤摘要】
基于神经网络的代码分析方法及其装置、电子设备
[0001]本专利技术涉及信息安全
,具体而言,涉及一种基于神经网络的代码分析方法及其装置、电子设备。
技术介绍
[0002]随着软件功能的日益强大,相应的程序代码越来越复杂,很难在设计开发中彻底消除程序代码中存在的所有漏洞或缺陷,若直接投产可能会对网络安全造成隐患,为避免软件安全漏洞问题,在投产前对软件的程序代码进行漏洞分析是十分重要的。
[0003]相关技术中,对软件的程序代码进行漏洞分析时还依赖于人工对程序的源代码进行分析,或者利用半自动化工具进行分析之后再由人工进行验收核对,由于目前程序的源代码中复杂的代码结构、繁多的封装函数和庞大的代码量,人工或自动化工具均难以捕捉代码元素与漏洞元素之间的关联关系,导致代码分析的误报率和漏报率高居不下,并且代码分析的效率比较低下。
[0004]针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
[0005]本专利技术实施例提供了一种基于神经网络的代码分析方法及其装置、电子设备,以至少解决相关技术中代码分析过程中,分析效率低下的技术问题。
[0006]根据本专利技术实施例的一个方面,提供了一种基于神经网络的代码分析方法,包括:接收目标程序的源代码,构建与所述目标程序的源代码对应的代码属性图;基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图,其中,所述可疑漏洞为所述源代码中疑似引起网络安全漏洞的代码段,所述预设切片原则至少包括:预设词法原则、预设路径原则 ...
【技术保护点】
【技术特征摘要】
1.一种基于神经网络的代码分析方法,其特征在于,包括:接收目标程序的源代码,构建与所述目标程序的源代码对应的代码属性图;基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图,其中,所述可疑漏洞为所述源代码中疑似引起网络安全漏洞的代码段,所述预设切片原则至少包括:预设词法原则、预设路径原则;基于所述代码属性子图在所述源代码中提取特征张量,并对所述特征张量进行编码,得到代码张量编码,其中,所述特征张量指所述源代码中能对所述代码属性子图中的节点属性和关联关系进行描述的代码字段,所述代码张量编码用于表征所述代码属性子图中所有节点的节点属性和关联关系;将所述代码张量编码输入至预设神经网络模型,输出所述目标程序的源代码中所述可疑漏洞的漏洞位置和漏洞类型。2.根据权利要求1所述的代码分析方法,其特征在于,基于预设切片原则对所述代码属性图进行切片,输出与可疑漏洞相关的代码属性子图的步骤,包括:基于所述预设词法原则,查找所述源代码中的可疑漏洞语句,将所述可疑漏洞语句在所述代码属性图中对应的节点标记为第一类可疑节点,基于所述第一类可疑节点以及各节点之间的第一依赖关系生成初始切片模板;基于所述预设路径原则,在所述代码属性图中标记第二类可疑节点,将所述第二类可疑节点以及各节点之间的第二依赖关系添加至所述初始切片模板,生成扩展切片模板;基于所述扩展切片模板对所述代码属性图进行切片,得到所述代码属性子图。3.根据权利要求2所述的代码分析方法,基于所述预设路径原则,在所述代码属性图中标记第二类可疑节点的步骤,包括:以所述第一类可疑节点为基点,获取所述代码属性图中每个其它节点到所述第一类可疑节点之间经过节点最少的最短路径,并统计所述最短路径所经过的总节点数,其中,所述其它节点是指除所述第一类可疑节点之外的节点;比较所述总节点数与预设数量阈值,得到比较结果;在所述比较结果指示所述总节点数小于等于所述预设数量阈值的情况下,将所述总节点数对应的其它节点标记为所述第二类可疑节点。4.根据权利要求1所述的代码分析方法,其特征在于,在构建与所述目标程序的源代码对应的代码属性图之前,还包括:提取所述源代码中各代码结构中的变量名;获取变量名重写策略;基于所述变量名重写策略,采用预设编译器解析器重写所述源代码中的变量名。5.根据权利要求1所述的代码分析方法,其特征在于,在输出所述目标程序中的可疑漏洞的漏洞位置和漏洞类型之后,还包括:基于所述漏洞位置生成待测试代码镜像,基于所述漏洞类型生成测试用例集,其中,所述测试用例集中包含N个测试用例,N为大于等于1的整数;基于所述漏洞位置,将所述测试用例注入所述待测试代码镜像,运行所述待测试代码镜像;监测运行过程中所述测试用例是否覆盖漏洞路径以及所述待测试代码镜像是否正常
运行,基于监测结果输出漏洞检测报告。6.根据权利要求1所述的代码分析方法,所述预设神经网络模型包括:输入层,接收所述代码张量编码;嵌入层,通过线性变换对所述代码张量编码进行降维处理;双向LSTM层,对降维后的所述代码张量编码进行双向分析,得到分析结果;注意力层,基于所述分析结果,计算所有降维后的所述代码张量编码的注意力权重,并将所述注意力权重标记到对应的所述代码张量编码上,输出标记后的所述代码张量编码;分类输出层,对标记后的所述代码张量编码进行特征分类,并输出分类结果,其中,所述分类结果指示所述目标程序中的可疑漏洞的漏洞位置和漏洞类型。7.根据权利要求1所述的代码分析方法,所述预设神经网络模型是通过以下方法得到的:获取M份历史代码程序的源代码以及漏洞检测数据集中预先记录的每份所述历史代码程序的历史代码漏洞,并确定每份所述历史代码漏洞的漏洞类型以及漏洞所在位置的标签,得到所述历史代码漏洞的漏洞...
【专利技术属性】
技术研发人员:庄沃霖,曾炜,李艺枫,陈凌潇,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。