Android软件漏洞检测方法与技术研究.doc

上传人:吴起龙 文档编号:1578158 上传时间:2018-12-25 格式:DOC 页数:12 大小:20.44KB
返回 下载 相关 举报
Android软件漏洞检测方法与技术研究.doc_第1页
第1页 / 共12页
Android软件漏洞检测方法与技术研究.doc_第2页
第2页 / 共12页
Android软件漏洞检测方法与技术研究.doc_第3页
第3页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Android软件漏洞检测方法与技术研究.doc》由会员分享,可在线阅读,更多相关《Android软件漏洞检测方法与技术研究.doc(12页珍藏版)》请在三一文库上搜索。

1、Android软件漏洞检测方法与技术研究【 文献标识码 】 A 【 Abstract 】 With the rapid development of the Android system, Android applicationsare widely used in peoples daily life and work. So Android based smart phones store a large amount of users sensitive data.The vulnerabilitiesof Android applicationsmake the users sensi

2、tive data leakage more seriously. To protectusers privacy information effectively,this paper proposes a method of detecting Android software vulnerabilities. Firstly, the vulnerabilities of Android applications are analyzed and classified into several different types; then,corresponding detection al

3、gorithms are proposed based on the characteristics of each type of vulnerability; next, a prototype tool for detection of Android software vulnerabilitiesis designed and implemented based on the proposed method; Finally, the implemented tools is applied to detect 886 Android applications.The experim

4、ental result demonstratesthat the proposed method is efficient and effective. 【 Keywords 】 android system;software vulnerability;detection method;privacy protection 1 引言 移动互联网的快速发展,智能移动设备的功能日益强大,正深刻地影响人们日常生活。尤其是移动支付、移动办公等智能化技术在改变着众多用户消费与工作方式。因此,智能设备上存储着大量个人敏感隐私数据和商业机密信息,这些敏感信息的泄露会导致用户利益蒙受损失,故而移动安全问题

5、得到了广泛关注。Android系统由于其开源、开放与免费等特性,占有智能移动设备最大的市场份额,拥有极其庞大的用户群体,其安全问题备受关注。 据友盟调查报告1显示,2015年第二和第三季度,Android设备的国内市场占有率均超过62%,位居第一。然而,Android设备隐私数据安全情况不容乐观。 首先,由于Android平台的开放性、碎片化以及Android应用软件开发者的安全知识等诸多因素,大量Android应用软件中存在不同类型的漏洞,Android平台的恶意软件利用软件漏洞导致安全事件时有发生。 其次,国内存在的许多Android第三方应用软件在线市场,大多缺乏严格的监管机制,发布的应

6、用软件甚至未进行安全性审核。因此,这些在线市场中充斥着为数众多的恶意代码或含有漏洞的应用软件,存在安全问题的应用软件一旦被下载并安装到用户手机中,不法分子可利用这些软件中的恶意代码通过软件漏洞,窃取用户敏感信息,这不仅使用户蒙受损失,同时也给开发商带来负面的影响,损害了用户和开发商的利益。因此,对Android应用软件的漏洞检测尤为重要。 另外,根据相关安全评估机构(如友盟、阿里云聚等)调查报告显示,Android软件漏洞呈现种类多、数量大等特点,人工检测代价大。而目前市面上Android软件漏洞的检测工具少,不足以满足漏洞检测需求。所以,研究Android软件漏洞检测技术并实现自动化检测具有

7、实际意义和价值。 2 相关工作进展 针对Android系统的漏洞检测,目前主要的研究工作进展涉及几方面。 Egele等人2发现加密API的误用问题存在于大量的Android应用中。Sounthiraraj等人3针对SSL/TLS的相关API存在的安全漏洞,实现了Android应用软件SSL/TLS中间人攻击漏洞的自动化检测。 Zhou等人4系统地研究了由组件Content Provider暴露而导致的数据泄露和污染问题。Arzt等人5提出了一种新颖的、高精度的Android应用程序静态污点分析的方法,实现了原型工具FlowDroid并用于寻找存在污点标记的路径,检测隐私数据泄露。 Grace等

8、人6针对Android系统预装应用软件,采用静态数据流分析方法,检测从组件入口点到敏感API的可达路径来判断是否存在权限泄露。Yang等人7采用动态Smart Fuzzing方式与Hook监测反馈机制来检测Android应用能力泄露漏洞。Zhongyang Y等人8基于Androguard9设计了静态分析检测工具DroidAlarm,用于检测Android应用中是否存在能力泄露漏洞。Ren C10 等人详细分析了Android中的任务劫持情况并提出相应的安全建议。 Lu等人11采用程序静态切片的方法更高效地检测Android应用中存在的组件劫持问题。Ye H等人12研究了Android应用的自

9、动化测试技术,解析Intent-Filter标签,通过Intent在Activity组件间传递外部MIME数据,主要可用于拒绝服务的检测。 本文致力于Android软件漏洞检测方法与技术的研究,根据简便实用的原则,主要做了几项工作。 (1)对Android软件漏洞进行整理、归纳与分类。收集了各漏洞平台公布的Android软件漏洞案例,并进行分析、整理、归纳与分类,将Android软件漏洞分为六个类别,分别是可备份/可调试漏洞、暴露组件风险攻击面、拒绝服务、API误用、数据泄露、能力泄露等。归纳各类别软件漏洞的特征。 (2)针对各类别软件漏洞提出相应的检测方法。针对不同类别软件漏洞特点分别采用两

10、种检测方法:静态分析方法与动态分析方法;其中,静态分析是基于漏洞特征匹配方法与静态可达性分析方法;动态分析是利用Android程序结构特点,生成有效的用于动态分析的测试数据,然后用所生成的测试数据动态测试被检测应用软件,以判定被测软件是否存在相应的漏洞。 (3)实现了基于上述Android软件漏洞检测方法的原型工具,并用该原型工具检测了886个从国内第三方Android应用市场上所获取的Android应用软件样本,并通过实验结果证明该方法的有效性。 3 Android软件漏洞分类与检测方法 3.1 软件漏洞分类 Android软件漏洞数量大、类型多。本文收集了国内各漏洞平台公布的Android

11、软件漏洞案例,并对收集到的漏洞案例进行分析、整理、归纳与分类,根据漏洞特征将Android软件漏洞分为可备份/可调试漏洞、暴露组件风险攻击面、拒绝服务、API误用、数据泄露、能力泄露等六个类别。 可备份/可调试漏洞。每一个Android应用软件都有一个名为AndroidManifest.xml的配置文件,位于应用项目的根目录。配置的内容包括组件的申明、权限的指定、所需的SDK 版本号、包名等。Android应用软件在安装以及运行过程中,Android系统使用该配置文件实施相关的安全验证。若对此文件配置不当,可能导致应用软件存在安全漏洞。此类漏洞常见有允许备份和可调试漏洞,分别如图1中的、所示。

12、由于允许备份为Android应用的默认配置,且在开发过程中常将应用设为可调试模式,容易被开发人员忽略,导致上市应用仍保留”allowBackup=true”或者”debuggable=true”属性,从而第三方应用软件可备份或调试当前应用。而设置了允许备份属性之后,攻击者可以在未获得root权限的情况下备份此应用的隐私文件。可调试属性使得其他应用可以随意修改程序运行状态或流程,对用户的隐私保护造成了隐患。 暴露组件风险攻击面。为了提高组件的复用率,开发者经常将自己的组件暴露给其它应用组件。这可能将包含私有信息的组件暴露。攻击者常将暴露组件作为攻击面,试图获取用户的隐私数据。组件暴露有两种形式。

13、 (1)设置exported=true且未使用权限进行保护。如图2中的。 (2)未对exported属性进行设置,但是组件中设置了intent-filter标签,该标签下设置了action属性。如图2中的。 本文主要检测应用中存在的暴露组件,并作为后续静态代码分析的入口点。 API误用。Android系统框架中一些API存在安全隐患,使用此类API将导致Android应用存在漏洞。而Android系统更新快,版本众多,有些手机产商未能及时推送升级甚至停止升级,导致此类漏洞可能长期存在。如WebView 远程代码执行漏洞13。TargetSDK低于17的Android版本中,使用WebView.

14、addJavascript Interfac方法的应用,攻击者可以通过java的反射机制利用该漏洞执行任意Java对象的方法,以此达到远程代码执行的目的。Google为Android 4.2以上的系统打了此漏洞的安全补丁,但并未从根本上解决问题,直到5.0以上Android版本才彻底解决该问题。 能力泄漏。Android的安全机制包括沙箱机制、权限机制和签名机制。其中权限机制指的是当前应用在访问或使用受保护的资源、能力时,需要显式地在Manifest文件中申请相应的权限。Android系统在安装应用时会列出此应用所申请的权限列表,询问用户是否同意授权。只有当用户同意之后,应用才能成功安装。而能

15、力泄露是由于组件在接收外部Intent时未做好访问控制,使得未申请相应权限的应用可以通过暴露组件作为入口点,触发高权限行为,导致权限提升的安全漏洞。如图3,A、B分别表示两个应用程序组件,其中A不具备发送短信的权限,B申请了访问短信权限且B是一个暴露组件。则A可以通过B来触发发送短信的行为,因此A的权限得到了提升。组件间的通信是通过Intent来实现的,因此在后续的静态分析中,将提取Intent的结构特征作为动态测试的初始测试数据,检测是否可以触发能力泄露漏洞。 数据泄露。数据泄露是指由于Content Provider 组件编码或者访问控制设置不当导致隐私数据可被恶意篡改或获取。Conten

16、t Provider组件用于实现Android应用间的数据共享,定义了数据操作接口供其他应用组件对相应数据进行操控。其它组件通过特定URI定位Content Provider。若在编写代码时,采用的是拼接SQL语句,且对外部的SQL操作语句过滤不当,可能导致本地SQL注入,泄露或污染隐私数据。若开发者不慎将敏感数据置于暴露的Content Provider中,外部组件可以获得相关数据。因此开发者在使用Content Provider时应严格过滤来自外部的SQL语句和URI,尽可能避免将敏感数据存放其中。 数据泄露检测。数据泄露针对Content Provider组件执行本地SQL语句时进行测试

17、,检测是否对异常参数进行过滤或采用拼接SQL语句。Android应用中通过uri来访问Content Provider。在4.2节静态检测方法中获得了一部分在配置文件中的uri信息:content:/authority。但在实际编程中,通常使用URIMatcher的add()方法将相应的表名与Authority拼接起来形成全地址uri。这类uri需要通过监控系统API,在ContentProvider创建的时候记录下相关信息,以此来获得更为精确的uri。然后,使用收集到的uri进行SQL注入检测。以uri作为目标地址,采用查询等数据库操作并添加恶意输入参数触发待测试应用漏洞。 暴露组件可达性测

18、试与拒绝服务检测。暴露组件可达性测试是对能力泄露漏洞的检验过程。与拒绝服务检测方法类似,两者都根据静态检测模块的结果,初步确定了接收Intent的组件,构造特定的Intent进行动态触发测试。检测流程如图7所示。 首先,分析组件接收的Intent结构特征,构造一个指定组件名称且包含Extra的显式Intent。例如组件A接收到一个Intent,且使用getStringExtra(”string”)方法获取到Extra值,则构造一个新的Intent发送给A,使用putExtra(”string”,random_string)对Intent进行填充。为了检测的全面性,设定n值,进行n次检测。分别使

19、用程序中收集的字符串、随机字符串、随机数据类型以及空值对Extra进行设定。若构造的Intent最终触发了敏感API,则记录能力泄露漏洞信息,若触发了拒绝服务行为,则记录拒绝服务漏洞信息。程序进行n次触发测试后结束。 5 实验与结果分析 本节目的在于通过实验检验本文所提出的方法效果。为此,我们实现本文所提出的Android应用软件漏洞检测方法的原型工具,并用该原型工具做实验。 5.1 实验环境 将Android应用软件漏洞检测原型工具部署在PC上,具体环境: Windows Server 2008 R2 Datacenter 内存:32.0GB; 处理器:E5606 2.13GHz (2处理器

20、); Genymotion 2.5.2模拟器 Python2.7、JDK7。 5.2 实验对象 从国内第三方应用市场中爬取886个APK作为测试样例,包含了社交、游戏、影音、资讯等各大类应用。最终检测结果有效测试样本总数为838个,其余48个应用在解析过程中出现错误,原因是开发者对配置文件进行保护、Python XML DOM库不能处理的无效编码等。 5.3 实验结果与分析 针对5.2节所述838个样本的实验统计结果。 图8为可备份/可调试漏洞统计。有259个应用未修改Android默认配置,上市之后仍保留可备份属性。一旦应用数据被恶意备份,将可能导致用户隐私泄露或直接导致经济损失。90个应用

21、存在可调试漏洞。在没有root权限的情况下,外部应用即可修改此应用的运行状态或逻辑。 图9为应用的暴露组件风险攻击面检测结果。结果显示Activity和Receiver这两类组件暴露的数量相对较多。因为Activity在应用中的使用频率最高,许多应用需要暴露自己的Activity与第三方应用交互。或者是应用为了接收系统广播等而暴露Receiver。 图10为API误用漏洞检测结果。该图统计了API误用类别并且在测试样本中的分布比例。其中Webview漏洞分布最为广泛,包括远程代码执行、密码保存、文件同源绕过等,占据API误用漏洞的62%左右。主要是由于Android系统的碎片化问题而导致。其他

22、漏洞如Shareprefs任意读写比例也较大。若对文件权限控制不当,将导致内部文件信息被泄露或篡改。 静态分析过程中检测到的暴露组件风险攻击面,可以作为动态测试的入口组件,进行拒绝服务、能力泄露及数据泄露漏洞检测。图11为这三种漏洞的统计图。 实验统计数据表明,拒绝服务漏洞较为普遍存在,有263个应用存在此漏洞。由于拒绝服务漏洞一般情况下对用户和开发者影响不大,故常被开发者忽略。但是,若一些安全软件拒绝服务漏洞被恶意程序利用,将可能导致安全软件功能失效,使用户的手机安全受到威胁。能力泄露和数据泄露漏洞分布较少,其中数据泄露主要是由SQL注入引起。目前本文工具只能分析较为简单的Intent结构,因此能力泄露漏洞的检测能力有待加强。 6 结束语 本文提出一种Android应用软件漏洞检测方法,对漏洞进行归纳整理并分类,为不同类别漏洞制定相应的检测方案并基于所提出的方法实现了Android软件漏洞检测原型工具。使用该工具检测886个包含社交、游戏、影音、资讯等各大类Android应用软件样本,检测结果表明本文所提的方法具有一定的有效性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1