应用软件安全漏洞检测方法和系统技术方案

技术编号:15982552 阅读:37 留言:0更新日期:2017-08-12 05:36
本发明专利技术公开了一种应用软件安全漏洞检测方法,该方法包括:将应用软件编译为预设的中间语言代码文本;根据所述代码文本,获取所述应用软件的数据关联结构;根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点;若成功查找到所述敏感调用点对应的外部输入点,则确定所述外部输入点为所述应用软件的安全漏洞。本发明专利技术还公开了一种应用软件安全漏洞检测系统。本发明专利技术大大提升了应用软件安全漏洞检测的效率。

【技术实现步骤摘要】
应用软件安全漏洞检测方法和系统
本专利技术涉及信息安全
,尤其涉及一种应用软件安全漏洞检测方法和系统。
技术介绍
现有应用软件漏洞静态检测方案通常是基于Androidsmali(安卓编译器)或者java(计算机编程语言)源码的规则扫描,通过采用预定义的正则或字符串特征的匹配检查方式,判断应用软件的代码模式是否存在问题。由于这种静态扫描未关联程序上下文数据,仅根据既定的规则检测,容易存在大量安全隐患的误报;并且,Androidsmali代码的语言粒度较细,一个语义需要多条语句表示,在进行应用软件的安全漏洞检测时,工作量大,浪费资源;而java高级语言代码的粒度偏粗,单一语句可能包含隐藏的语义,在进行应用软件的安全漏洞检测时,检测的粒度也相应较粗,存在安全隐患漏报。可见,现有的应用软件安全漏洞检测方式受代码语言影响,检测效率较低。
技术实现思路
本专利技术的主要目的在于提供一种应用软件安全漏洞检测方法和系统,旨在解决应用软件代码语言影响安全漏洞检测效率的技术问题。为实现上述目的,本专利技术提供一种应用软件安全漏洞检测方法,所述应用软件安全漏洞检测方法包括以下步骤:将应用软件编译为预设的中间语言代码文本;根据所述代码文本,获取所述应用软件的数据关联结构;根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点;若成功查找到所述敏感调用点对应的外部输入点,则确定所述外部输入点为所述应用软件的安全漏洞。优选地,所述根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤包括:根据所述变量参数及所述数据关联结构,回溯查找输出所述变量参数的前驱调用点;若所述前驱调用点是基于函数调用输出的返回值,则再次回溯查找返回所述前驱调用点实参的前驱调用点,确定源节点;若所述源节点为外部输入点,则确定所述外部输入点为所述敏感调用点对应的外部输入点;若所述源节点为常量赋值,则停止回溯,确定未找到所述敏感调用点对应的外部输入点。优选地,所述根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤,还包括:若找到多个输出所述变量参数且执行顺序先于所述敏感调用点的调用点,则确定所述多个调用点中执行顺序最接所述近敏感调用点的为所述前驱调用点。优选地,所述根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤,还包括:若所述前驱调用点将所述变量参数作为赋值输出,则根据所述数据关联结构获取所述变量参数对应的右值;若所述右值为外部输入点输入的变量,则确定所述外部输入点为所述敏感调用点对应的外部输入点;若所述右值为常量赋值,则停止回溯,确定未找到所述敏感调用点对应的外部输入点。优选地,所述确定所述外部输入点为所述应用软件的安全漏洞的步骤之后,还包括:确定回溯找到所述外部输入点的路径为危险路径。此外,为实现上述目的,本专利技术还提供一种应用软件安全漏洞检测系统,所述应用软件安全漏洞检测系统包括:编译模块,用于将应用软件编译为预设的中间语言代码文本;关联模块,用于根据所述代码文本,获取所述应用软件的数据关联结构;回溯模块,用于根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点;确定模块,用于若成功查找到所述敏感调用点对应的外部输入点,则确定所述外部输入点为所述应用软件的安全漏洞。优选地,所述回溯模块还用于,根据所述变量参数及所述数据关联结构,回溯查找输出所述变量参数的前驱调用点;若所述前驱调用点是基于函数调用输出的返回值,则再次回溯查找返回所述前驱调用点实参的前驱调用点,确定源节点;若所述源节点为外部输入点,则确定所述外部输入点为所述敏感调用点对应的外部输入点;若所述源节点为常量赋值,则停止回溯,确定未找到所述敏感调用点对应的外部输入点。优选地,所述回溯模块还用于,若找到多个输出所述变量参数且执行顺序先于所述敏感调用点的调用点,则确定所述多个调用点中执行顺序最接所述近敏感调用点的为所述前驱调用点。优选地,所述回溯模块还用于,若所述前驱调用点将所述变量参数作为赋值输出,则根据所述数据关联结构获取所述变量参数对应的右值;若所述右值为外部输入点输入的变量,则确定所述外部输入点为所述敏感调用点对应的外部输入点;若所述右值为常量赋值,则停止回溯,确定未找到所述敏感调用点对应的外部输入点。优选地,所述确定模块还用于,确定回溯找到所述外部输入点的路径为危险路径。本专利技术实施例提出的一种应用软件安全漏洞检测方法和系统,通过将待检测应用软件编译为预设的中间语言代码文本,转换后的应用软件代码一条语句包含一条语义,不会产生歧义,适合做安全漏洞检测;然后,根据应用软件的中间语言代码文本,获取应用软件的数据关联结构,从而得到应用软件中各调用点的函数及参数具体信息,以供进行数据回溯;然后,根据应用软件中敏感调用点的变量参数及数据关联结构,回溯查找敏感调用点对应的外部输入点;若成功查找到敏感调用点对应的外部输入点,则确定此找到的外部输入点为应用软件的安全漏洞,会给应用软件带来风险。本发用针对基于Androidsmali(安卓编译器)或者java(计算机编程语言)的规则匹配检测方法存在的误报问题,采用中间语言的应用软件程序代码进行数据流分析,既可避免单一程序代码特征的粗糙检查,又能够通过数据关联结构,关联应用软件上下文的数据传递进行数据回溯、漏洞检测,避免了漏洞的误报和漏报;另一方面,本专利技术基于折中的中间语言的分析规避了smali和java语言的缺点,降低了安全漏洞检测的工作量,使得漏洞检测的结果更准确。由此,本专利技术解决了现有的应用软件代码语言给安全漏洞检测带来的各项困扰,大大提升了应用软件安全漏洞检测的效率。附图说明图1为本专利技术应用软件安全漏洞检测方法第一实施例的流程示意图;图2为图1中根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤的细化流程示意图;图3为图1中根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤的细化流程示意图;图4为本专利技术应用软件安全漏洞检测方法第二实施例的流程示意图;图5为本专利技术应用软件安全漏洞检测方法第三实施例的流程示意图;图6为本专利技术应用软件安全漏洞检测系统第一实施例、第二实施例、第三实施例的功能模块示意图。本专利技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。参照图1,本专利技术应用软件安全漏洞检测方法第一实施例提供一种应用软件安全漏洞检测方法,所述应用软件安全漏洞检测方法包括:步骤S10、将应用软件编译为预设的中间语言代码文本。本专利技术通过将待检测应用软件编译为中间语言文本,得到的应用软件代码一条语句包含一条语义,不会产生歧义,而且语言力度相对高级语言较细,相对低级语言较粗,适合进行静态的应用软件安全漏洞检测;而且,本专利技术综合应用软件的数据关联结构,结合程序上下文的语言传递,避免单一代码特征的粗糙检测造成的漏洞的误报、漏报,并且提高了安本文档来自技高网...
应用软件安全漏洞检测方法和系统

【技术保护点】
一种应用软件安全漏洞检测方法,其特征在于,所述应用软件安全漏洞检测方法包括以下步骤:将应用软件编译为预设的中间语言代码文本;根据所述代码文本,获取所述应用软件的数据关联结构;根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点;若成功查找到所述敏感调用点对应的外部输入点,则确定所述外部输入点为所述应用软件的安全漏洞。

【技术特征摘要】
1.一种应用软件安全漏洞检测方法,其特征在于,所述应用软件安全漏洞检测方法包括以下步骤:将应用软件编译为预设的中间语言代码文本;根据所述代码文本,获取所述应用软件的数据关联结构;根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点;若成功查找到所述敏感调用点对应的外部输入点,则确定所述外部输入点为所述应用软件的安全漏洞。2.如权利要求1所述的应用软件安全漏洞检测方法,其特征在于,所述根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤包括:根据所述变量参数及所述数据关联结构,回溯查找输出所述变量参数的前驱调用点;若所述前驱调用点是基于函数调用输出的返回值,则再次回溯查找返回所述前驱调用点实参的前驱调用点,确定源节点;若所述源节点为外部输入点,则确定所述外部输入点为所述敏感调用点对应的外部输入点;若所述源节点为常量赋值,则停止回溯,确定未找到所述敏感调用点对应的外部输入点。3.如权利要求2所述的应用软件安全漏洞检测方法,其特征在于,所述根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤,还包括:若找到多个输出所述变量参数且执行顺序先于所述敏感调用点的调用点,则确定所述多个调用点中执行顺序最接所述近敏感调用点的为所述前驱调用点。4.如权利要求2所述的应用软件安全漏洞检测方法,其特征在于,所述根据所述应用软件中敏感调用点的变量参数及所述数据关联结构,回溯查找所述敏感调用点对应的外部输入点的步骤,还包括:若所述前驱调用点将所述变量参数作为赋值输出,则根据所述数据关联结构获取所述变量参数对应的右值;若所述右值为外部输入点输入的变量,则确定所述外部输入点为所述敏感调用点对应的外部输入点;若所述右值为常量赋值,则停止回溯,确定未找到所述敏感调用点对应的外部输入点。5.如权利要求1-4任一项所述的应用软件...

【专利技术属性】
技术研发人员:王金锭
申请(专利权)人:平安科技深圳有限公司
类型:发明
国别省市:广东,44

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

1