一种应用漏洞检测方法、装置及计算设备与流程

文档序号:12365217阅读:来源:国知局

技术特征:

1.一种应用漏洞检测方法,其特征在于,包括:

确定应用的目标组成元素及目标组成元素的组成数据;

对各目标组成元素的各组成数据进行漏洞静态检测;

若检测到存在漏洞的组成数据,将所检测到的组成数据作为疑似漏洞数据,对所述疑似漏洞数据的数据来源进行回溯跟踪;

若所回溯跟踪到的数据来源为外部可控的,则确定所述疑似漏洞数据为所检测到的应用漏洞。

2.根据权利要求1所述的应用漏洞检测方法,其特征在于,所述目标组成元素为类,所述组成数据包括类的方法数据;

所述对各目标组成元素的各组成数据进行漏洞静态检测包括:

对各类的各方法数据中的各函数调用点进行漏洞静态检测;

所述若检测到存在漏洞的组成数据,将所检测到的组成数据作为疑似漏洞数据包括:

若检测到存在漏洞的函数调用点,将所检测到的函数调用点作为疑似函数调用点;

所述对所述疑似漏洞数据的数据来源进行回溯跟踪包括:

根据函数逻辑对所述疑似函数调用点的数据来源进行回溯跟踪;

所述若所回溯跟踪到的数据来源为外部可控的,则确定所述疑似漏洞数据为所检测到的应用漏洞包括:

若回溯跟踪到所述疑似函数调用点的数据来源关联至外部输入,则确定所述疑似函数调用点为应用中存在漏洞的函数调用点。

3.根据权来要求2所述的应用漏洞检测方法,其特征在于,所述对各类的各方法数据中的各函数调用点进行漏洞静态检测包括:

调用预设的漏洞规则文件,所述漏洞规则文件注册有危险函数的特征;

将各类的各方法数据中的各函数调用点对应的函数的特征,与所述漏洞规则文件中注册的危险函数的特征进行匹配处理;

若存在函数调用点对应的函数的特征,与所述漏洞规则文件中注册的危险函数的特征相匹配,则确定所述函数调用点为疑似存在漏洞的疑似函数调用点。

4.根据权利要求3所述的应用漏洞检测方法,其特征在于,所述根据函数逻辑对所述疑似函数调用点的数据来源进行回溯跟踪包括:

提取所述疑似函数调用点对应函数的关键参数;

根据函数逻辑,模拟应用在真实环境中的数据流向,以回溯跟踪所述关键参数的数据来源;

所述回溯跟踪到所述疑似函数调用点的数据来源关联至外部输入包括:

回溯跟踪到所述关键参数的数据来源关联至外部输入。

5.根据权利要求4所述的应用漏洞检测方法,其特征在于,所述确定应用的目标组成元素及目标组成元素的组成数据包括:

确定应用的类的树结构,所述树结构的一个节点对应一个类,一个节点下的子节点对应有类的方法数据。

6.根据权利要求5所述的应用漏洞检测方法,其特征在于,还包括:构建各类所对应的符号表,所述符号表包括:各类对应的类摘要表、类中每个方法对应的函数摘要表,及函数摘要表对应的变量信息表;

所述根据函数逻辑,模拟应用在真实环境中的数据来源向,以回溯跟踪所述关键参数的数据来源包括:

基于所述符号表回溯跟踪所述关键参数的数据来源。

7.根据权利要求6所述的应用漏洞检测方法,其特征在于,所述基于所述符号表回溯跟踪所述关键参数的数据来源包括:

基于所述符号表,回溯跟踪到的数据来源为外部输入变量,则确定回溯跟踪到所述关键参数的数据来源关联至外部输入;

或,基于所述符号表,回溯跟踪到的数据来源为变量,且变量类型为基本非字符串类型,则确定回溯跟踪到所述关键参数的数据来源关联至外部输入;

或,基于所述符号表,回溯跟踪到的数据来源为变量,但所述变量不为外部输入变量,且类型不为非字符串类型时,则从所述符号表查找所述变量最近的关联值;若未查找到关联值,且所述变量不为类成员变量,则确定回溯跟踪到所述关键参数的数据来源关联至外部输入;

或,基于所述符号表,回溯跟踪到的数据来源为变量,但所述变量不为外部输入变量,且类型不为非字符串类型时,则从所述符号表查找所述变量 最近的关联值;若未查找到关联值,且所述变量为类成员变量,则判断所述类成员变量是否被关联为漏洞标记,若是,则确定回溯跟踪到所述关键参数的数据来源关联至外部输入。

8.根据权利要求7所述的应用漏洞检测方法,其特征在于,还包括:

基于所述符号表,回溯跟踪到的数据来源为变量,且变量类型为基本非字符串类型,则确定所述关键参数的数据来源未关联至外部输入;

或,基于所述符号表,回溯跟踪到的数据来源为变量,但所述变量不为外部输入变量,且类型不为非字符串类型时,从所述符号表查找所述变量最近的关联值;若查找到的关联值为赋值,则追踪右值对象;若查找到的关联值对应函数调用,则通过所述符号表获取所述函数摘要,并继续追踪;若未查找到关联值,且所述变量为类成员变量,则追踪所述类成员变量;

或,在追踪到函数调用时,通过所述符号表获取对应的函数摘要,追踪所获取的函数摘要所关联的参数表达式;

或,在追踪到常量时,确定所述关键参数未关联至外部输入;

或,在追踪到二元操作时,追踪对应的操作数表达式;

或,在追踪到其他类型的参数时,追踪所述其他类型的参数对应的表达式。

9.根据权利要求5所述的应用漏洞检测方法,其特征在于,所述确定应用的类的树结构包括:

获取编译所述应用所采用的组成元素;

根据预先设定的抽象语法树AST的节点位置对应的元素类型,将各所述组成元素填入对应的AST节点中,得到所述应用对应的AST;

读取所述AST中类的树结构。

10.根据权利要求9所述的应用漏洞检测方法,其特征在于,所述获取编译所述应用所采用的组成元素包括:

对应用的安装文件进行反编译;

分析反编译后的结果,得到编译所述应用所采用的组成元素。

11.根据权利要求9或10所述的应用漏洞检测方法,其特征在于,所述根据函数逻辑,模拟应用在真实环境中的数据来源,以回溯跟踪所述关键参数的数据来源包括:

确定所述疑似函数调用点在所述AST的整体树结构中的位置;

以所确定的位置为起始位置,确定所述AST的整体树结构中该起始位置可回溯跟踪的路径;

以所确定的路径,对所述疑似函数调用点的关键参数的数据来源进行回溯跟踪。

12.一种应用漏洞检测装置,其特征在于,包括:

目标元素数据确定模块,用于确定应用的目标组成元素及目标组成元素的组成数据;

静态检测模块,用于对各目标组成元素的各组成数据进行漏洞静态检测;

回溯跟踪模块,用于若检测到存在漏洞的组成数据,将所检测到的组成数据作为疑似漏洞数据,对所述疑似漏洞数据的数据来源进行回溯跟踪;

漏洞确定模块,用于若所回溯跟踪到的数据来源为外部可控的,则确定所述疑似漏洞数据为所检测到的应用漏洞。

13.根据权利要求12所述的应用漏洞检测装置,其特征在于,所述目标组成元素为类,所述组成数据包括类的方法数据;

所述静态检测模块包括:

函数静态检测单元,用于对各类的各方法数据中的各函数调用点进行漏洞静态检测;

所述回溯跟踪模块包括:

函数回溯跟踪单元,用于若检测到存在漏洞的函数调用点,将所检测到的函数调用点作为疑似函数调用点,根据函数逻辑对所述疑似函数调用点的数据来源进行回溯跟踪;

所述漏洞确定模块包括:

漏洞函数确定单元,用于若回溯跟踪到所述疑似函数调用点的数据来源关联至外部输入,则确定所述疑似函数调用点为应用中存在漏洞的函数调用点。

14.根据权利要求13所述的应用漏洞检测装置,其特征在于,所述函数回溯跟踪单元包括:

提取子单元,用于提取所述疑似函数调用点对应函数的关键参数;

回溯跟踪执行子单元,用于根据函数逻辑,模拟应用在真实环境中的数 据流向,以回溯跟踪所述关键参数的数据来源。

15.一种计算设备,其特征在于,包括权利要求12-14任一项所述的应用漏洞检测装置。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1