首页> 中国专利> Android应用软件API误用类漏洞自动化检测方法

Android应用软件API误用类漏洞自动化检测方法

摘要

本发明涉及一种 Android应用软件API误用类漏洞自动化检测方法,包括静态分析和动态分析:静态分析的主要内容为:结合Android应用软件特点进行建模构造全程序控制流程图,结合程序结构遍历进行API误用可达性分析和常量传播分析筛选出候选可疑漏洞;动态分析的主要内容为:针对不同类型的漏洞设计不同的模块对所述静态分析得到的候选可疑漏洞进行漏洞触发,记录所述候选可疑漏洞的行为,最终给出该应用的漏洞安全评估。本发明采用动态静态结合的方式对存在的API误用类漏洞进行检测,减少市面上静态检测存在的误报率,同时提高动态检测的覆盖率。

著录项

  • 公开/公告号CN104933362A

    专利类型发明专利

  • 公开/公告日2015-09-23

    原文格式PDF

  • 申请/专利权人 福州大学;

    申请/专利号CN201510328402.9

  • 申请日2015-06-15

  • 分类号G06F21/56(20130101);G06F21/57(20130101);

  • 代理机构35100 福州元创专利商标代理有限公司;

  • 代理人蔡学俊

  • 地址 350108 福建省福州市闽侯县上街镇大学城学园路2号福州大学新区

  • 入库时间 2023-12-18 11:00:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-20

    授权

    授权

  • 2015-10-21

    实质审查的生效 IPC(主分类):G06F21/56 申请日:20150615

    实质审查的生效

  • 2015-09-23

    公开

    公开

说明书

技术领域

本发明涉及一种 Android应用软件API误用类漏洞自动化检测方法。

背景技术

随着移动互联网的快速发展,移动支付、移动办公等将融入人们生活,商业机密、个人隐私等敏感信息保护变得至关重要。伴随着Android系统的普及,越来越多的开发者加入Android阵营,随之而产生的Android软件安全问题越来越严峻,更由于众多开发人员安全意识的参差不齐,以及Android系统碎片化的严重,这些因素将使得软件漏洞长期存在,导致Android应用软件易被攻击。

在Android软件漏洞类型中,其中有一类漏洞很大程度是由于开发者没有按照google提供的安全编程规范而导致的漏洞。例如: framework API误用,AndroidManifest配置错误。针对应用软件API误用导致的漏洞的利用不仅可以窃取用户信息,远程控制用户手机,甚至还会影响开发者的利益。

目前现有技术中,针对API误用类漏洞的检测,主要还是针对具体漏洞进行检测,并对具体漏洞类型进行工具开发检测。其中Attacks on WebView in the Android system[C]//Proceedings of the 27th Annual Computer Security Applications Conference. ACM, 2011: 343-352.对Android应用软件常用的webview组件进行了分析,指出其中可能存在的安全隐患,包括调用导出接口执行APK native功能等。Why Eve and Mallory love Android: An analysis of Android SSL (in) security[C]//Proceedings of the 2012 ACM conference on Computer and communications security. ACM, 2012: 50-61. 重点关注于Android应用中SSL/TLS协议的使用问题,发现存在大量API的https类API误用问题,可导致中间人攻击,并设计了MalloDroid通过静态动态结合的技术对可能存在漏洞进行中间人攻击检测。An empirical study of cryptographic misuse in android applications[C]//Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security. ACM, 2013: 73-84. 发现了在大量Android应用中存在的对加密API的误用,相关加密存在安全风险。

但以上研究主要关注与某种特定漏洞,只能进行相应漏洞的分析,不能较便捷的进行扩展,但其实本质上都是由于开发者对于framework API使用不规范而导致的漏洞,除了以上相关API的误用类漏洞,还存在一类关于文件权限控制相关的API误用漏洞,该类漏洞可导致的应用程序文件内容泄露。

发明内容

本发明的目的在于提供一种 Android应用软件API误用类漏洞自动化检测方法,采用动态静态结合的方式对存在的API误用类漏洞进行检测,减少市面上静态检测存在的误报率,同时提高动态检测的覆盖率。

为实现上述目的,本发明采用如下技术方案:一种 Android应用软件API误用类漏洞自动化检测方法,包括静态分析和动态分析,其特征在于:

所述静态分析的主要内容为:解析待检测应用软件的AndroidManifest.xml配置文件及其所有组件,并将各个组件的系统回调函数通过静态插桩连接在一起生成新的入口函数,以所述入口函数为入口点生成到各个组件的入口控制流程图;通过所述入口点对所述待检测应用软件进行建模构造全程序控制流程图,结合程序结构遍历进行API误用可达性分析和常量传播分析筛选出候选可疑漏洞;

所述动态分析的主要内容为:针对不同类型的漏洞设计不同的模块对所述静态分析得到的候选可疑漏洞进行漏洞触发,记录所述候选可疑漏洞的行为,最终给出所述待检测应用软件的漏洞安全评估。

进一步的,所述静态分析中的候选可疑漏洞的检测包括:

WebView漏洞检测:a、远程执行漏洞检测:targetSDK是否小与17,并检测是否调用了addJavascriptInterface接口,是否调用了removeJavascriptInterface移除系统内置的暴露接口;b、file域隐私泄露漏洞检测:检测4.1以下的应用的webview是否存在setAllowFileAccessFromFileURIs与setAllowUniversalAccessFromFileURIs误用;

Android HTTPS中间人攻击漏洞检测:a、检测是否存在使用setHostnameVerifier (ALLOW_ALL_HOSTNAME_VERIFIER);b、是否自定义X509TrustManager不校验证书;

文件权限误用检测:检测Database,Shared Preferences,Internal Storage安全风险,其中对相关的文件分别进行API误用可达分析,并分析是否使用MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE模式创建文件;

密码学误用API检测:通过静态分析一系列的加密函数,所述加密函数包括Cipher.doFinal,KeySpec初始化函数,通过检查所述加密函数的参数值,检测是否存在密码学API误用;

Android通用拒绝服务漏洞特征定位检测:通过可达分析,确认应用组件有关intent处理extras函数的位置,记录解析该组件接收intent的特征,以便于进行拒绝服务检测;

配置文件错误检测:allowBackup安全风险,暴露组件安全风险,可调试安全风险。

进一步的,所述动态分析中不同类型的漏洞包括:与网络相关漏洞、与文件操作相关漏洞及与组件IPC相关漏洞。

进一步的,针对所述不同类型的漏洞的测试方法如下:

与网络相关漏洞:使用网络代理工具MIMT实施中间人流量劫持,通过替换证书后能够解密https流量或在手机上安装签发自定义证书的CA根证书后能够解密https流量则证明存在https漏洞;通过劫持网站跳转到挂马网站或注入js,可以验证静态检测的webview漏洞,后期有关网络部分的API误用漏洞动态测试可在其进行扩展;

与文件操作相关漏洞:通过运行应用,触发其相应API,通过adb shell对其/data/data目录下的所属权限进行文件API误用类漏洞进行验证,对于新类型的API误用漏洞,对其进行动态测试可以在其基础上增加模块;

与组件IPC相关漏洞:通过静态分析解析出的intent特征进行畸形数据的构造,生成动态测试数据,尝试触发Android通用拒绝服务漏洞。

本发明与现有技术相比具有以下有益效果:本发明采用静态动态结合的方式对存在的API误用类漏洞进行漏洞检测,静态分析中通过对应用程序进行建模,结合Android应用程序组件生命周期,事件回调等特点构建全程序控制流程图,通过在图上进行遍历与程序结构紧密结合在一起,减少市面上静态检测存在的误报率,同时提高动态检测的覆盖率;而动态检测结合静态检测的特征进行动态行为测试,一旦触发则将为有效漏洞,通过动态自动化测试的方式也弥补了静态分析误报率的不足,减少人工确认环节,自动化发现Android应用存在的API误用类漏洞。对于以后相关的存在误用漏洞的API,可以通过简单的扩展进行漏洞的检测,可以提高API误用类检测的效率。

附图说明

图1是本发明方法流程图。

图2是本发明静态分析流程图。

图3是本发明动态分析流程图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

请参照图1,本发明提供一种 Android应用软件API误用类漏洞自动化检测方法,包括静态分析和动态分析,其特征在于:

如图2所示,所述静态分析的主要内容为:解析待检测应用软件的AndroidManifest.xml配置文件及其所有组件,并将各个组件的系统回调函数通过静态插桩连接在一起生成新的入口函数,以所述入口函数为入口点生成到各个组件的入口控制流程图;通过所述入口点对所述待检测应用软件进行建模构造全程序控制流程图,结合程序结构遍历进行API误用可达性分析和常量传播分析筛选出候选可疑漏洞;

所述静态分析中的候选可疑漏洞的检测包括:

WebView漏洞检测:a、远程执行漏洞检测:targetSDK是否小与17,并检测是否调用了addJavascriptInterface接口,是否调用了removeJavascriptInterface移除系统内置的暴露接口;b、file域隐私泄露漏洞检测:检测4.1以下的应用的webview是否存在setAllowFileAccessFromFileURIs与setAllowUniversalAccessFromFileURIs误用;

Android HTTPS中间人攻击漏洞检测:a、检测是否存在使用setHostnameVerifier (ALLOW_ALL_HOSTNAME_VERIFIER);b、是否自定义X509TrustManager不校验证书;

文件权限误用检测:检测Database,Shared Preferences,Internal Storage安全风险,其中对相关的文件分别进行API误用可达分析,并分析是否使用MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE模式创建文件;

密码学误用API检测:通过静态分析一系列的加密函数,所述加密函数包括Cipher.doFinal,KeySpec初始化函数,通过检查所述加密函数的参数值,检测是否存在密码学API误用;

Android通用拒绝服务漏洞特征定位检测:通过可达分析,确认应用组件有关intent处理extras函数的位置,记录解析该组件接收intent的特征,以便于进行拒绝服务检测;

配置文件错误检测:allowBackup安全风险,暴露组件安全风险,可调试安全风险。

如图3所示,所述动态分析的主要内容为:针对不同类型的漏洞设计不同的模块对所述静态分析得到的候选可疑漏洞进行漏洞触发,记录所述候选可疑漏洞的行为,最终给出所述待检测应用软件的漏洞安全评估。

所述动态分析中不同类型的漏洞包括:与网络相关漏洞、与文件操作相关漏洞及与组件IPC相关漏洞;其中与网络相关漏洞包括WebView漏洞、Android HTTPS中间人攻击漏洞,与文件操作相关漏洞包括文件权限误用,与组件IPC相关漏洞包括Android通用拒绝服务漏洞。

针对所述不同类型的漏洞的测试方法如下:

与网络相关漏洞:使用网络代理工具MIMT实施中间人流量劫持,通过替换证书后能够解密https流量或在手机上安装签发自定义证书的CA根证书后能够解密https流量则证明存在https漏洞;通过劫持网站跳转到挂马网站或注入js,可以验证静态检测的webview漏洞,后期有关网络部分的API误用漏洞动态测试可在其进行扩展;

与文件操作相关漏洞:通过运行应用,触发其相应API,通过adb shell对其/data/data目录下的所属权限进行文件API误用类漏洞进行验证,对于新类型的API误用漏洞,对其进行动态测试可以在其基础上增加模块;

与组件IPC相关漏洞:通过静态分析解析出的intent特征进行畸形数据的构造,生成动态测试数据,尝试触发Android通用拒绝服务漏洞。

用户可上传需要检测漏洞的应用软件,暴露组件漏洞检测系统对该应用进行静态程序结构分析以及动态测试。对于触发的漏洞,系统记录下详细的信息,并进行归类(WebView漏洞、Android HTTPS中间人攻击漏洞、文件权限误用、密码学误用API、Android通用拒绝服务漏洞,配置文件错误)展现给用户,以供用户进行应用程序改进。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号