代码安全分析方法、装置、电子设备和存储介质制造方法及图纸

技术编号:39034177 阅读:15 留言:0更新日期:2023-10-10 11:47
本公开提出一种代码安全分析方法、装置、电子设备和存储介质,其中,方法包括:获取源代码的抽象语法树,并获取抽象语法树中的函数集合,针对每个函数节点,根据抽象语法树,确定出函数节点所对应目标函数的函数名称、目标变量和所属的类路径信息,并获取目标变量的变量信息,以及在函数名称与预设风险点所对应的预设函数名称相同,并且类路径信息与预设风险点所对应的类路径信息相同和/或变量信息与预设风险点所对应的预设变量信息相同的情况下,确定目标函数为存在风险的函数。由此,结合函数的函数名称、所属的类路径信息和变量的变量信息等多种因素,准确确定出源代码中存在风险的函数,提高源代码安全分析的准确性。提高源代码安全分析的准确性。提高源代码安全分析的准确性。

【技术实现步骤摘要】
代码安全分析方法、装置、电子设备和存储介质


[0001]本公开涉及安全测试
,尤其涉及一种代码安全分析方法、装置、电子设备和存储介质。

技术介绍

[0002]目前,软件被越来越多的用于处理各种敏感信息和高价值信息,例如商业信息、财政信息等,这使得软件日益成为企图获取这些信息的攻击者的攻击目标。攻击者企图挖掘软件中的安全漏洞,以干扰软件运行,实现对软件的恶意操作。其中,软件的源代码编写阶段引入的风险点是最常见的安全漏洞。因此,如何确定出对源代码中的风险点,对于提高软件的安全性是十分重要的。

技术实现思路

[0003]本公开提出一种代码安全分析方法、装置、电子设备和存储介质。
[0004]本公开一方面实施例提出了一种代码安全分析方法,包括:
[0005]获取源代码的抽象语法树;
[0006]获取所述抽象语法树中的函数节点集合,其中,所述函数节点集合包括多个函数节点,其中,所述多个函数节点分别与所述源代码中的多个函数对应;
[0007]针对每个函数节点,根据所述抽象语法树,确定出所述函数节点所对应目标函数的函数名称、目标变量和所属的类路径信息,其中,所述目标函数为所述多个函数中的一个;
[0008]获取所述目标变量的变量信息;
[0009]在所述函数名称与预设风险点所对应的预设函数名称相同,并且所述类路径信息与预设风险点所对应的类路径信息相同和/或所述变量信息与预设风险点所对应的预设变量信息相同的情况下,确定所述目标函数为存在风险的函数。
[0010]本公开另一方面方面实施例提出了一种代码安全分析装置,包括:
[0011]第一获取模块,用于获取源代码的抽象语法树;
[0012]第二获取模块,用于获取所述抽象语法树中的函数节点集合,其中,所述函数节点集合包括多个函数节点,其中,所述多个函数节点分别与所述源代码中的多个函数对应;
[0013]第一确定模块,用于针对每个函数节点,根据所述抽象语法树,确定出所述函数节点所对应目标函数的函数名称、目标变量和所属的类路径信息,其中,所述目标函数为所述多个函数中的一个;
[0014]第三获取模块,用于获取所述目标变量的变量信息;
[0015]第二确定模块,用于在所述函数名称与预设风险点所对应的预设函数名称相同,并且所述类路径信息与预设风险点所对应的类路径信息相同和/或所述变量信息与预设风险点所对应的预设变量信息相同的情况下,确定所述目标函数为存在风险的函数。
[0016]本公开另一方面实施例提出了一种电子设备,包括存储器、处理器及存储在存储
器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如前述一方面所述的方法。
[0017]本公开另一方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述一方面所述的方法。
[0018]本公开另一方面实施例提出了一种计算机程序产品,其上存储有计算机程序,所述程序被处理器执行时实现如前述一方面所述的方法。
[0019]本公开提出的代码安全分析方法、装置、电子设备和存储介质,在对源代码进行安全分析的过程中,获取源代码的抽象语法树,并获取抽象语法树中的函数集合,针对每个函数节点,根据抽象语法树,确定出函数节点所对应目标函数的函数名称、目标变量和所属的类路径信息,并获取目标变量的变量信息,以及在函数名称与预设风险点所对应的预设函数名称相同,并且类路径信息与预设风险点所对应的类路径信息相同和/或变量信息与预设风险点所对应的预设变量信息相同的情况下,确定目标函数为存在风险的函数。由此,结合函数的函数名称、所属的类路径信息和变量的变量信息等多种因素,准确确定出源代码中存在风险的函数,提高了源代码安全分析的准确性。
[0020]本公开附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本公开的实践了解到。
附图说明
[0021]本公开上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0022]图1为本公开实施例所提供的一种代码安全分析方法的流程示意图;
[0023]图2为本公开实施例提供的另一种代码安全分析方法的流程示意图;
[0024]图3为本公开实施例提供的另一种代码安全分析方法的流程示意图;
[0025]图4为本公开实施例提供的另一种代码安全分析方法的流程示意图;
[0026]图5为本公开实施例提供的另一种代码安全分析方法的流程示意图;
[0027]图6为本公开实施例提供的另一种代码安全分析方法的流程示意图;
[0028]图7为本公开实施例提供的一种代码安全分析装置的结构示意图;
[0029]图8为本公开实施例提供的一种电子设备的结构框图。
具体实施方式
[0030]下面详细描述本公开的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本公开,而不能理解为对本公开的限制。
[0031]下面参考附图描述本公开实施例的代码安全分析方法、装置、电子设备和存储介质。
[0032]图1为本公开实施例所提供的一种代码安全分析方法的流程示意图。
[0033]本公开实施例的代码安全分析方法的执行主体为代码安全分析装置,该代码安全分析装置可以为电子设备,或者,可以配置在电子设备中。其中电子设备可以为个人电脑(Personal Computer,简称PC)、云端设备、移动设备、服务器等,移动设备例如可以为手机、
平板电脑、个人数字助理、穿戴式设备、车载设备等任意硬件设备,本公开对此不作限制。。
[0034]如图1所示,该方法可以包括以下步骤:
[0035]步骤101,获取源代码的抽象语法树。
[0036]在一些实施例中,在获取待分析的源代码后,可对源代码进行语法分析,并根据语法分析结果,建立该源代码的抽象语法树。
[0037]在本公开的一个实施例中,可通过AST提取器,对源代码进行解析,以获取源代码中各个函数声明的语法树表示形式,并根据所获取到的各个函数声明的语法树表示形式,生成该源代码的抽象语法树。
[0038]其中,抽象语法树(AST,Abstract Syntax Tree),是指对源代码中的程序语句进行词法和语法分析之后,按照该程序语句的语法规则进行推导时所形成的树。
[0039]步骤102,获取抽象语法树中的函数节点集合。
[0040]其中,函数节点集合包括多个函数节点,其中,多个函数节点分别与源代码中的多个函数对应。
[0041]步骤103,针对每个函数节点,根据抽象语法树,确定出函数节点所对应目标函数的函数名称、目标变量和所属的类路径信息,其中,目标函数为多个函数中的一个。
[0042]在一些实施本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种代码安全分析方法,其特征在于,包括:获取源代码的抽象语法树;获取所述抽象语法树中的函数节点集合,其中,所述函数节点集合包括多个函数节点,其中,所述多个函数节点分别与所述源代码中的多个函数对应;针对每个函数节点,根据所述抽象语法树,确定出所述函数节点所对应目标函数的函数名称、目标变量和所属的类路径信息,其中,所述目标函数为所述多个函数中的一个;获取所述目标变量的变量信息;在所述函数名称与预设风险点所对应的预设函数名称相同,并且所述类路径信息与预设风险点所对应的类路径信息相同和/或所述变量信息与预设风险点所对应的预设变量信息相同的情况下,确定所述目标函数为存在风险的函数。2.如权利要求1所述的方法,其特征在于,在所述确定所述目标函数为存在风险的函数之后,所述方法还包括:确定出所述目标函数在所述源代码的第一代码位置;从所述抽象语法树中确定出调用所述目标函数的调用函数;确定出所述调用函数在所述源代码的第二代码位置。3.如权利要求1或2所述的方法,其特征在于,在所述目标变量为局部变量的情况下,所述获取所述目标变量的变量信息,包括:获取所述目标变量的定义

使用对;根据所述函数名称,从所述定义

使用对中,获取所述目标变量的变量定义信息在所述源代码中的第三代码位置;根据所述第三代码位置,获取所述目标变量在所述源代码中的变量定义信息;根据所述变量定义信息,确定出所述变量的变量信息。4.如权利要求3所述的方法,其特征在于,所述获取所述目标变量的定义

使用对,包括:获取所述目标函数的数据流信息,其中,所述数据流信息中包括所述目标变量的定义

使用对。5.如权利要求1或2所述的方法,其特征在于,在所述目标变量为输入变量的情况下,所述获取所述目标变量的变量信息,包括:获取所述目标函数中所述目标变量的输入参数信息;根据所述输入参数信息,确定出所述目标变量的变量信息。6.如权利要求1或2所述的方法,其特征在于,在所述目标变量为局部变量的情况下,所述获取所述目标变量的变量信息,包括:获取所述目标函数调用所述目标变量时所使用的接口信息;根据所述接口信息,获取所述目标变量在所述源代码中的变量声明信息;根据所述变量声明信息,确定所述目标变量的变量信息。7.一种代码安全分析装置,其特征在于,包括:第一获取模块,用于获取源代码的抽象语法树;第二获取模块,用于获取所述抽象语法树中的函数节点集合,其中,所述函数节点集合包括多个函数节点,其中,所述多个函数节点分别与所述源代码中的多个函数对应;<...

【专利技术属性】
技术研发人员:郑斯碟
申请(专利权)人:北京车和家信息技术有限公司
类型:发明
国别省市:

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

1