一种应用漏洞检测方法及系统与流程

文档序号:11408005阅读:190来源:国知局
一种应用漏洞检测方法及系统与流程

本发明涉及网络技术领域,更具体地,涉及一种应用漏洞检测方法及系统。



背景技术:

目前,为了开发出终端可移植性更好的应用,降低应用的开发成本,很多开发者开始使用全新的开发方式:混合应用。这种开发方式基于标准的网页开发(web)语言:超文本标记语言(html5)、层叠样式表(css3)和java脚本语言(javascript),这些web语言具有跨终端运行能力,并且各个终端为web语言提供了访问终端底层资源的接口,使其具有和原生应用媲美的能力。

混合应用不仅使得应用中的正常代码能力更强,也使得应用中恶意代码的能力更强,恶意代码能够访问终端的底层资源,并对终端系统造成严重的破坏,学术界把恶意代码这种攻击方式称为“代码注入攻击”。现有的应用漏洞检测方法是遵循不信任一切外界输入的原则,对于网站的数据输入源,如网站中的用户表单输入、统一资源定位符(url)链接等等进行跟踪检测,如果这些数据输入源中的执行路径中存在漏洞,这些数据输入源中含有的恶意代码就有可能被执行,从而造成代码注入攻击。

但是现有的应用漏洞检测方法一般只针对简单的数据输入源进行漏洞检测,而混合应用能够调用底层资源实现扫描二维码、读取通讯录、扫描和读取无线连接(wifi)列表、读取短信等操作,其输入数据源的种类更多,受攻击面更广,所以现有的应用漏洞检测方法无法完全覆盖混合应用中的数据输入源,也就不能全面的检测出其中的代码注入攻击漏洞,并且现有的应用漏洞检测方法不能识别混合应用的开发框架类型,也就不能根据开发框架类型去调整检测逻辑。



技术实现要素:

本发明提供一种克服上述问题或者至少部分地解决上述问题的一种应用漏洞检测方法及系统。

根据本发明的一个方面,提供一种应用漏洞检测方法,包括:

s1、基于预设的混合应用分析规则,分析待检测混合应用的开发框架,得到所述待检测混合应用所使用的目标开发框架类型;

s2、基于所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;

s3、基于预设的调用路径分析工具,对所述各目标数据输入源进行分析,得到所述各目标数据输入源的各个调用路径;

s4、基于预设的漏洞检测规则,检测所述各目标数据输入源的各个调用路径上存在的漏洞。

其中,s1包括:

确定所述待检测混合应用的开发框架所使用的开发框架各目标特征;

根据所述开发框架各目标特征以及各开发框架类型对应的各预设开发框架特征,确定所述待检测混合应用所使用的目标开发框架类型;

其中,所述预设开发框架特征包括:所述开发框架配置文件的约定名称、所述开发框架中约定的目录结构、所述开发框架中底层应用程序编程接口的名称和所述开发框架中特定关键字符。

其中,s2包括:

基于所述目标开发框架类型,在预设的数据输入源数据库中遍历所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;其中,所述数据输入源数据库中包括:开发框架类型和开发框架类型对应的各个预设数据输入源。

其中,s3包括:

基于预设的调用路径分析工具,分析所述各目标数据输入源的数据流向;

基于所述各目标数据输入源的数据流向,得到所述各目标数据输入源的各个调用路径。

其中,s4包括:

基于预设的危险赋值数据库,检测所述各目标数据输入源的各个调用路径上使用的调用规则是否为危险赋值调用规则,其中,所述危险赋值数据库包括:对应用造成危险的危险赋值和所述危险赋值对应的危险赋值调用规则;

若检测到使用了危险赋值调用规则的目标调用路径,则判定所述目标调用路径存在漏洞。

根据本发明的另一方面,提供了一种应用漏洞检测系统,包括:

第一分析模块,用于基于预设的混合应用分析规则,分析待检测混合应用的开发框架,得到所述待检测混合应用所使用的目标开发框架类型;

确定模块,用于基于所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;

第二分析模块,用于基于预设的调用路径分析工具,对所述各目标数据输入源进行分析,得到所述各目标数据输入源的各个调用路径;

检测模块,用于基于预设的漏洞检测规则,检测所述各目标数据输入源的各个调用路径上存在的漏洞。

其中,第一分析模块具体用于:

确定所述待检测混合应用的开发框架所使用的开发框架各目标特征;

根据所述开发框架各目标特征以及各开发框架类型对应的各预设开发框架特征,确定所述待检测混合应用所使用的目标开发框架类型;

其中,所述预设开发框架特征包括:所述开发框架配置文件的约定名称、所述开发框架中约定的目录结构、所述开发框架中底层应用程序编程接口的名称和所述开发框架中特定关键字符。

其中,确定模块具体用于:

基于所述目标开发框架类型,在预设的数据输入源数据库中遍历所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;其中,所述数据输入源数据库中包括:开发框架类型和开发框架类型对应的各个预设数据输入源。

其中,第二分析模块具体用于:

基于预设的调用路径分析工具,分析所述各目标数据输入源的数据流向;

基于所述各目标数据输入源的数据流向,得到所述各目标数据输入源的各个调用路径。

其中,检测模块具体用于:

基于预设的危险赋值数据库,检测所述各目标数据输入源的各个调用路径上使用的调用规则是否为危险赋值调用规则,其中,所述危险赋值数据库包括:对应用造成危险的危险赋值和所述危险赋值对应的危险赋值调用规则;

若检测到使用了危险赋值调用规则的目标调用路径,则判定所述目标调用路径存在漏洞。

本发明提出的应用漏洞检测方法及系统,通过判定混合应用所使用的开发框架类型,对所述开发框架类型对应的数据输入源的调用路径上存在的漏洞进行检测,检测过程可随着应用开发框架和应用特征的更新而更新,使漏洞检测过程可以调整模式并且提高漏洞检测的准确性。

附图说明

图1为本发明实施例提供的一种应用漏洞检测方法流程图;

图2本发明实施例提供的一种应用漏洞检测系统结构示意图;

图3为本发明实施例提供的应用漏洞检测系统流程图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

图1是本发明实施例提供的一种应用漏洞检测方法流程图,所述方法包括s1至s4:

s1、基于预设的混合应用分析规则,分析待检测混合应用的开发框架,得到所述待检测混合应用所使用的目标开发框架类型;

s2、基于所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;

s3、基于预设的调用路径分析工具,对所述各目标数据输入源进行分析,得到所述各目标数据输入源的各个调用路径;

s4、基于预设的漏洞检测规则,检测所述各目标数据输入源的各个调用路径上存在的漏洞。

需要说明的是,在进行漏洞检测之前,需要建立数据库,包括:混合应用样例库、混合应用特征库、数据输入源数据库以及危险赋值数据库。

s1中,根据混合应用样例库和混合应用特征库中提供的开发框架资料以及不同开发框架类型对应的不同特征,分析待检测混合应用使用的开发框架类型。

其中,所述混合应用样例库为搜集的市场上基于各类框架开发的混合应用,如cordova、dcloud、ionic、mobileangularui、senchatouch等,按照混合应用使用的开发框架建立混合应用样例库。

所述混合应用特征库为提取各种混合应用框架开发出的混合应用特征,构建混合应用特征库,所述特征包括:混合应用开发框架中配置文件的约定名称、框架中约定的目录结构以及框架中底层api的特有声明方式,根据这些特征可以判定混合应用使用的开发框架类型。

s2中,在建立的数据输入源数据库中根据s1中分析出的开发框架类型查找对应的数据输入源有哪些,再确定待检测的混合应用中含有的数据输入源。

其中,所述数据输入源数据库为不同类型开发框架对应的数据输入源。

s3中,需要说明的是,所述各目标输入源的各个调用路径指的是根据各目标输入源在程序中的位置,获取到其相关的javascript语句以及使用的函数调用路径。需要说明的是,若目标输入源的程序没有存储在本地,需要从服务器端对源码进行下载。

其中,所述预设的调用路径分析工具一般采用fondue工具,该工具能够根据输入的javascript语句,获取到其中每个函数的信息,所述函数的信息包括:函数名称、所在行数、列数、有无输入和回调函数等,再根据所述函数的信息,通过正则匹配的方法结合函数位置分析函数间的调用关系以及数据流向,再根据函数间的调用关系以及数据流向确定函数调用路径。

s4中,需要说明的是,所述对应用造成危险的危险赋值指代的是危险赋值函数,所述危险赋值函数为,应用中的数既能展示数据,又能执行夹杂在数据中代码的函数,如dom模型中的innerhtml函数,该赋值语句可以将输入中的数据展示,同时执行其中的代码。

其中,所述危险赋值数据库为对应用造成危险的危险赋值和所述危险赋值对应的危险赋值调用规则。在危险赋值数据库中根据函数调用路径查找可能含有的危险赋值函数,再在待检测的混合应用中的函数调用路径上检测是否存在危险赋值数据库中的危险赋值函数,若含有危险赋值函数,则证明这条函数调用路径有漏洞。

本发明实施例通过判定混合应用所使用的开发框架类型,对所述开发框架类型对应的数据输入源的调用路径上存在的漏洞进行检测,检测过程可随着应用开发框架和应用特征的更新而更新,使漏洞检测过程可以调整模式并且提高漏洞检测的准确性。

在图1所述实施例的基础上,s1包括:

确定所述待检测混合应用的开发框架所使用的开发框架各目标特征;

根据所述开发框架各目标特征以及各开发框架类型对应的各预设开发框架特征,确定所述待检测混合应用所使用的目标开发框架类型;

其中,所述预设开发框架特征包括:所述开发框架配置文件的约定名称、所述开发框架中约定的目录结构、所述开发框架中底层应用程序编程接口的名称和所述开发框架中特定关键字符。

具体的,在待检测混合应用中确定所述待检测混合应用使用开发框架配置文件的约定名称、所述开发框架中约定的目录结构、所述开发框架中底层应用程序编程接口的名称和所述开发框架中特定关键字符,并在混合应用特征库中查找对应开发框架特征符合的开发框架类型,确定待检测混合应用所使用的开发框架类型。

部分开发框架类型对应的开发框架特征如表1所示。

表1:部分开发框架类型对应的开发框架特征

如表1所示,若确定的待检测混合应用中的开发框架配置文件约定名称为cordova_plugins.js,开发框架中约定的目录结构为deviceready,则可确定待检测混合应用使用的开发框架类型为cordova。

本发明实施例通过检测开发框架特征来分析待检测混合应用的开发框架类型,能准确检测出待检测混合应用的开发框架类型,为后续检测漏洞提供基础。

在图1所述实施例的基础上,s2包括:

基于所述目标开发框架类型,在预设的数据输入源数据库中遍历所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;其中,所述数据输入源数据库中包括:开发框架类型和开发框架类型对应的各个预设数据输入源。

具体的,基于目标开发框架的类型在预设的数据输入源数据库中遍历所述目标开发框架类型对应的各个预设数据输入源,部分开发框架类型对应的预设数据输入源如表2所示。

表2:部分开发框架类型对应的预设数据输入源

例如:确定的目标开发框架类型为cordova,则在预设的数据输入源数据库中遍历cordova对应的所有预设的数据输入源,确定待检测混合应用中含有其中哪些目标数据输入源。

本发明实施例通过建立数据输入源数据库来检测待检测混合应用中含有的数据输入源,提高检测效率并且可以及时更新数据库来调控检测。

在图1所述实施例的基础上,s3包括:

基于预设的调用路径分析工具,分析所述各目标数据输入源的数据流向;

基于所述各目标数据输入源的数据流向,得到所述各目标数据输入源的各个调用路径。

需要说明的是,本发明实施例不限定调用路径分析工具的类型,一般采用fondue工具对调用路径进行分析,但也可采用wala工具对调用路径进行分析,wala的可移植性要比fondue优秀,但是wala的运行效率不如fondue,可根据需要自由选取调用路径分析工具。

具体的,使用调用路径分析工具对混合应用中数据输入源使用的javascript语句进行实时运行分析,进而获取到javascript语句中函数的名称、位置、回调函数、有无输入等信息,然后结合自定义的正则匹配算法,就可以形成函数间的调用关系,分析得到函数调用路径。

本发明实施例通过使用路径分析工具对混合应用中的数据输入源使用的函数进行分析,得到所述数据输入源的调用路径,简化检测过程,提高检测效率。

在图1所述实施例的基础上,s4包括:

基于预设的危险赋值数据库,检测所述各目标数据输入源的各个调用路径上使用的调用规则是否为危险赋值调用规则,其中,所述危险赋值数据库包括:对应用造成危险的危险赋值和所述危险赋值对应的危险赋值调用规则;

若检测到使用了危险赋值调用规则的目标调用路径,则判定所述目标调用路径存在漏洞。

具体的,当外界数据输入到混合应用中,应用中会有些函数对这些数据进行展示,将其赋值到页面中去,但是如果这些函数既能展示数据,又能执行夹杂在数据中的恶意代码,就有可能造成代码注入,这种函数也可称为危险赋值函数,部分危险赋值函数如表3所示。

表3:部分危险赋值函数

例如待检测混合应用中某一条调用路径上调用了before()这种危险赋值函数,则判定这条调用路径上存在漏洞。

本发明实施例通过对调用路径上的危险赋值函数的调用进行检测来确定混合应用中是否存在漏洞,检测方法准确可靠,并且方法通用可适应任意混合应用。

图2是本发明实施例提供的一种应用漏洞检测系统结构示意图,包括:第一分析模块1、确定模块2、第二分析模块3和检测模块4,其中:

第一分析模块1用于基于预设的混合应用分析规则,分析待检测混合应用的开发框架,得到所述待检测混合应用所使用的目标开发框架类型;

确定模块2用于基于所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;

第二分析模块3用于基于预设的调用路径分析工具,对所述各目标数据输入源进行分析,得到所述各目标数据输入源的各个调用路径;

检测模块4用于基于预设的漏洞检测规则,检测所述各目标数据输入源的各个调用路径上存在的漏洞。

可以理解的是,如图1所述的实施例所述,在进行漏洞检测之前,需要建立数据库,包括:混合应用样例库、混合应用特征库、数据输入源数据库以及危险赋值数据库。

第一分析模块1根据混合应用样例库和混合应用特征库中提供的开发框架资料以及不同开发框架类型对应的不同特征,分析待检测混合应用使用的开发框架类型。

确定模块2在建立的数据输入源数据库中根据第一分析模块1中分析出的开发框架类型查找对应的数据输入源有哪些,再确定待检测的混合应用中含有的数据输入源。

第二分析模块3基于预设的调用路径分析工具,对所述各目标数据输入源进行分析,得到所述各目标数据输入源的各个调用路径。

检测模块4对各个调用路径上存在的漏洞进行检测,判断待检测混合应用中是否存在漏洞。

具体的应用漏洞检测系统工作流程如图3所示,待检测混合应用经第一分析模块分析得到待检测混合模块的开发框架类型,再通过确定模块确定所述待检测混合模块含有的数据输入源,然后第二分析模块对数据输入源进行分析,得到目标数据输入源的各个调用路径,最后检测模块对调用路径上的漏洞进行检测,若含有漏洞则上报。

本发明实施例第一分析模块通过判定混合应用所使用的开发框架类型,检测模块对所述开发框架类型对应的数据输入源的调用路径上存在的漏洞进行检测,检测过程可随着应用开发框架和应用特征的更新而更新,使漏洞检测过程可以调整模式并且提高漏洞检测的准确性。

在图2所述实施例的基础上,第一分析模块具体用于:

确定所述待检测混合应用的开发框架所使用的开发框架各目标特征;

根据所述开发框架各目标特征以及各开发框架类型对应的各预设开发框架特征,确定所述待检测混合应用所使用的目标开发框架类型;

其中,所述预设开发框架特征包括:所述开发框架配置文件的约定名称、所述开发框架中约定的目录结构、所述开发框架中底层应用程序编程接口的名称和所述开发框架中特定关键字符。

具体的第一分析模块的应用方法参见上述实施例,此处不再赘述。

本发明实施例第一分析模块通过检测开发框架特征来分析待检测混合应用的开发框架类型,能准确检测出待检测混合应用的开发框架类型,为后续检测漏洞提供基础。

在图2所述实施例的基础上,确定模块具体用于:

基于所述目标开发框架类型,确定模块在预设的数据输入源数据库中遍历所述目标开发框架类型对应的各个预设数据输入源,确定所述待检测混合应用中含有的各目标数据输入源;其中,所述数据输入源数据库中包括:开发框架类型和开发框架类型对应的各个预设数据输入源。

具体的,基于目标开发框架的类型在预设的数据输入源数据库中遍历所述目标开发框架类型对应的各个预设数据输入源,例如:确定的目标开发框架类型为sencha,则在预设的数据输入源数据库中遍历sencha对应的所有预设的数据输入源,确定待检测混合应用中含有其中哪些目标数据输入源。

本发明实施例通过建立数据输入源数据库来检测待检测混合应用中含有的数据输入源,提高检测效率并且可以及时更新数据库来调控检测。

在图2所述实施例的基础上,第二分析模块具体用于:

基于预设的调用路径分析工具,分析所述各目标数据输入源的数据流向;

基于所述各目标数据输入源的数据流向,得到所述各目标数据输入源的各个调用路径。

具体的第二分析模块的应用方法参见上述实施例,此处不再赘述。

本发明实施例第二分析模块通过使用路径分析工具对混合应用中的数据输入源使用的函数进行分析,得到所述数据输入源的调用路径,简化检测过程,提高检测效率。

在图2所述实施例的基础上,检测模块具体用于:

基于预设的危险赋值数据库,检测所述各目标数据输入源的各个调用路径上使用的调用规则是否为危险赋值调用规则,其中,所述危险赋值数据库包括:对应用造成危险的危险赋值和所述危险赋值对应的危险赋值调用规则;

若检测到使用了危险赋值调用规则的目标调用路径,则判定所述目标调用路径存在漏洞。

具体的,当外界数据输入到混合应用中,应用中会有些函数对这些数据进行展示,将其赋值到页面中去,但是如果这些函数既能展示数据,又能执行夹杂在数据中的恶意代码,就有可能造成代码注入,这种函数也可称为危险赋值函数,检测模块检测到某一条调用路径上调用了险赋值函数,则判定这条调用路径上存在漏洞。

本发明实施例检测模块通过对调用路径上的危险赋值函数的调用进行检测来确定混合应用中是否存在漏洞,检测方法准确可靠,并且方法通用可适应任意混合应用。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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