谢佳筠,伏 晓,骆 斌
(南京大学 软件学院,南京 210093)
在移动互联网高速发展的今天,企业和个人正在将越来越多的计算通过移动平台来实现,同时也将越来越多的数据存储到移动设备上。根据互联网数据中心(IDC)2015年第二季度的报道,Android在移动市场占有82.8%的市场占有率,拥有着绝对的领先地位。工信部2014年发布的《移动互联网白皮书》显示,移动互联网催生了全新的应用服务体系,在交通、餐饮、旅游、支付等领域已经产生了深远影响,为用户提供了便利。
但是,Android设备在提供便利的同时,安全问题也日益凸显。由于Android平台开源的特性,针对Android平台的攻击屡见不鲜。根据McAfee报告显示,从2014年第4季度-2015年第3季度短短两年时间,恶意软件的规模从300万上升至接近1 000万。除此之外,恶意软件攻击的范围很广,从硬件设备、内核层、系统层到应用层,每一层都可能成为恶意攻击的目标。Android平台上的恶意攻击呈现出数量巨大、范围很广和后果严重的特点。
为了保证Android平台健康稳定的发展,各个层面的安全问题必须得到有效的解决,这就催生了针对Android各个层面上的安全防护。安全防护的目的是在应用安装至移动设备之前对其进行全方位的安全性验证,最大程度上过滤掉恶意应用;对于在安装前不能够过滤的恶意应用,需要在应用运行的时刻实时进行防护,保证应用不被利用从事恶意攻击。学术界和工业界也一直致力于提出更安全的防护机制和框架来应对恶意威胁。Android防护技术作为实现安全的重要手段,发展至今已经存在很成熟的方案,但是仍然存在很多重要的问题有待解决。为此,本文整理近年来有关Android防护领域方面的文章,并加以综述,希望通过总结归纳提供一个全面的认识,促进该领域的更加深入的研究。
本文阐述Android安全问题的理论研究情况,包括可能存在的安全缺陷和面临的威胁,介绍针对各个层面的Android防护技术的研究进展,对Android安全防护领域现有的工作进行分析比较和总结归纳,并指出Android防护领域的机遇与挑战。
目前,Android安全问题得到学术界的广泛关注,针对Android安全方面的研究文献[1-3]对Android各个层面上的Android安全机制进行归纳和总结,总结了当前研究领域的相关工作与发展的趋势。针对Android中的安全缺陷进行研究有助于更好的了解恶意攻击实施的攻击面,能够更好地了解其所面临的威胁。本文将对这些文章中所涉及的Android安全问题加以概括和总结,归纳了目前Android的安全缺陷以及安全所面临的威胁。
Android安全缺陷如下所示。
1)不同设备厂商的设备固件、操作系统和预装的应用都有可能被用来发动攻击。在全球存在多种不同的移动设备供应商,例如三星、华为、HTC和小米等。他们所使用的操作系统都是经过深度定制的,拥有不一样的安全特性。往往存在一些特定的安全漏洞,一旦被利用将会引发安全问题。
2)应用开发者安全意识薄弱。即使专业的应用开发者,也会不经意地暴露一些接口。应用开发者对于权限认知不够,经常会不经意地声明无关的权限。某些应用会暴露应用内部的接口,给恶意攻击者提供了攻击的途径。
3)应用市场鱼龙混杂,不同应用市场的审查机制不一。Google官方的应用市场Google Play,用户可以从上面下载应用安装至自己的移动设备上。此外,其他应用市场也提供类似功能,例如小米应用商店、豌豆荚和91助手等。由于各个市场的安全审查机制不同,恶意应用能够在特定市场上传播,严重危害了用户的安全。
4)应用安装途径多样。一般而言,直接从应用市场下载并安装程序是最直接的方式。但是,也存在直接通过USB连接将Android应用安装到设备上,使用ADB的install命令可将应用安装至目标设备上。由于无法验证应用程序是否存在恶意行为,通过ADB安装是十分危险的。
5)Android权限模型粒度较粗。用户需要在安装应用的时候对应用的权限进行授权,但是用户并不能够准确的知道权限被用在了哪些地方。不仅如此,权限较粗的粒度也会带来相应的安全性风险。尽管在Android 6.0中提出运行时权限的概念,但是这个权限缺陷对于6.0之前的Android设备仍然存在。
6)相较于Windows和Unix的可执行文件,Android应用很容易反编译。经过反编译之后的代码往往是脆弱的,非常容易添加新的代码,重新打包成一个新的应用。很大一部分恶意软件是通过重新打包来实现的[4]。
7)Android组件间通信。应用间通信方式存在安全隐患,容易发生多个应用之间合谋的情况。多个应用合谋通道存在多样性,包括显示通道和隐蔽通道,对于隐蔽通道的监控与防范仍然不完善。
8)Android设备包含很多可以唯一确定该设备的信息,包括IMEI、设备序列号等。如果这些信息泄露了出去,那么很容易就能对该设备进行跟踪定位。
9)Linux内核层漏洞也会成为攻击者攻击的对象。Android设备使用Linux内核进行实现,既继承了Linux十分可靠的安全隔离机制,同时也带来了Linux内核方面的漏洞。
现有的主要威胁来源于Android各层次的安全缺陷。攻击者可以通过挖掘平台的漏洞,窃取敏感用户信息,利用电话服务来获取金钱利益,或者创造僵尸网络来获取智能手机的控制权。其可以使用窃取、动态执行、代码混淆,重新打包和加密等技术,去绕过现有的Android平台和反病毒软件提供的安全检测。本节对Android面临的主要威胁进行了归纳。
1)重新打包攻击。恶意作者可以对原始应用进行反编译,加入恶意负载,重新打包成一个新的应用。新的应用往往伪装成原始应用,在提供一些基础功能的同时执行恶意攻击。
2)越权攻击。没有权限的应用,通过其他具备权限的应用或者设置功能,可以获取需要权限才能够访问到的资源,执行相应的操作。这类攻击可以发生在应用内部,例如获得root权限;可以发生在应用之间,执行越权行为;也可以发生在不同的操作系统版本升级的时候。
3)隐私泄露和个人信息窃取。移动设备包括很多隐私数据,例如移动设备号码、联系人信息和地理位置等信息。恶相同意应用通过短信、互联网等通信方式,可以将敏感信息传送出去。
4)合谋攻击。在同一个设备上,拥有的证书签名的应用集合可以相互合作。他们拥有相同的UID,能够互相共享彼此的权限。单个应用运行的时候表现的十分正常,但是当多个应用并存的时候,它们可以一起合作完成攻击。
5)拒绝服务攻击。此类攻击可以发生在移动设备资源耗尽的时候,移动设备的资源一般包含CPU计算资源、内存资源、电池资源、宽带资源等,而这些资源一旦耗尽,移动设备将不能够正常提供服务。
6)远程控制。恶意应用通过远程命令控制整个设备,执行恶意操作。能够监控用户的操作,包括电话、短信、银行和音频和视频等。
针对Android平台的弱点和可能存在的威胁,不少研究者提出了他们的安全防护措施。本节首先介绍Android各个版本的安全增强机制。随后从一个Android应用程序的开发、发布、安装、运行和更新5个步骤出发,列出在各个阶段已有的防护策略。
为了应对来自各方面的威胁,Android对其自身的操作系统也在不断地改良和完善。本节总结了Android各个版本的改进内容。
Android寻求为移动平台提供一个安全可用的操作系统,用来保护用户的数据,保护系统的资源和提供应用隔离。为了实现这些目标,Android提供了以下的安全特性:Linux内核层的鲁棒性,强制为所有应用提供应用沙箱,保护进程间通信,应用签名,应用定义权限,并由用户授权。Android各个版本分别对平台进行了各方面的安全增强。
Android1.5中提出了防止堆缓冲区溢出的安全增强。Android2.3提出了格式化字符串的防范,提出了基于硬件不执行来防止堆栈代码执行。Android4.0提出内存地址空间布局随机化(ASLR)的功能来防止对内存的攻击。Android4.2修改了权限描述。Android4.3增强了SELinux,取消了setuid和setgid函数。Android5.0将WebView设置为独立模块,更改了加密机制,防止在丢失设备情况下的数据丢失。在Android6.0中,提出了运行时权限的问题。不同于在安装的时候提供粗粒度的授权机制,用户可以在运行时动态设置权限。
由于Android应用可以被反编译,所以很容易被恶意作者篡改并加入恶意代码。从开发者的角度来看,在开发阶段对应用进行加固能够有效防止恶意操作。
重新打包成为各类恶意攻击的主要形式,文献[4]指出,在其收集的1 260个恶意程序中,通过重新打包生成的比例是86%。为了防止重新打包,文献[5]提出了一种基于路径的水印模式,它以应用程序代码和一组随机的字符串或者数字作为输入,生成一款全新的内嵌水印的应用。在之后的运行中它可以对挂钩的代码进行验证,同时恢复之前的水印,对开发者的代码做防护。
在应用程序中,针对可能存在的安全漏洞打补丁也是一种方法。例如,组件劫持漏洞将会暴露应用中的公开接口,方便恶意程序调用。为了应对此类漏洞,文献[6]事先对应用进行分析,在每个应用上面的沉淀点添加防护策略,提供更加全面的、以数据为中心的系统级防护,构建更加安全的应用。文章中提出的Droidforce工具基于时间序列,能够在运行过程中动态更新,方便提供精细化的策略。
应用开发者完成应用,需要将应用发布到应用市场。应用市场作为连接用户手机和应用的平台,在Android安全中有着举足轻重的地位。2011年Google官方的Android市场上DroidDream恶意应用肆虐,大量手机被感染。为了防止恶意软件大范围传播,Google推出了一款叫做Bouncer的应用审查工具,用来对应用进行审查和分析。它将应用安装至模拟的环境中动态的运行,分析出其中可能存在的问题。即便如此,一些恶意软件依然能够绕过该检测机制,成功地发布到应用市场中,所以在应用市场中实现更加安全的防护机制是十分必要的。值得注意的是,目前相互独立的Android应用市场很多,它们各自的审查机制又存在很大的差别,所以攻击者更容易挖掘特定应用市场的漏洞并传播恶意应用。
在应用市场进行审查,能够有效过滤出恶意应用,在源头上减少恶意应用的数量。应用市场可以利用其丰富的计算资源,对应用进行更加全面的安全分析。在应用市场中可以针对性地对应用进行漏洞挖掘、权限映射分析、数据流分析、组件间通信分析和重新打包的检测。
2.3.1 相似度计算
针对应用市场上良莠不齐的应用,查找重新打包应用具有十分重要的意义。在检测重新打包的应用的方法中,计算相似度成为经常使用的方法。相似度计算往往需要定义不同的特征,通过匹配这些特征的相似度来进行检测。文献[7]使用了基于模糊哈希的方法,对应用市场内的所有应用,通过应用程序的操作码生成应用程序的指纹。对比两个应用的指纹距离,判断2个应用是否存在重新打包的可能性,进而识别重新打包的应用。文献[8]通过比较两个不同应用的程序依赖图来判定是否存在重新打包的操作。利用WALA工具可以生成一个应用的程序依赖图,每个点代表一个语句,每条边代表两条语句之间的关系。在获取两个应用的程序依赖图后,构造出其子图,进而计算出其相似度。
2.3.2 权限映射计算
Android通过权限来限制应用对敏感资源的访问和操作。Android应用权限和API调用存在着映射关系,这些映射关系能够为进一步的安全分析提供基础。
文献[9]用来研究一个应用是否满足其所声明的最小使用权限,确定一个应用程序使用到了哪些权限。本文提出的Stowaway通过结合基于模糊测试、生成专用的测试用例和手动验证的技术,经验性地得出权限和API之间的映射关系。由于Stowaway所提出的方法需要耗费大量的人工进行手动验证,导致了其无法应对Android多个版本变更的现实。文献[10]提出了一种自动化的工具,对Android各个版本源码进行分析,进而得到更加全面的映射关系。在Android2.2中,PScout分析出了17 218个映射关系,而Stowaway仅仅分析出1 259个。
2.3.3 数据流分析
通过对应用进行数据流分析,可以很好地知道一些敏感数据的流向,进而有效地防范出可能存在的信息泄漏问题。文献[11]考虑到了与回调函数相关的控制流不连续的情况,从而判断应用能否通过公共接口访问到危险权限,用来判定应用是否存在能力泄露漏洞。文献[12]提出一款静态分析工具,用来分析组件劫持漏洞。它使用数据依赖图来进行可达性分析,进而识别出未授权的应用对被攻击的应用进行的恶意操作,如读取敏感数据操作或者将数据写入敏感位置的操作。文献[13]对一个应用进行两步分析,首先发现调用root、非法花销和隐私泄露的路径,然后对应用进行启发式搜索来发现可能的恶意行为。
Android应用包含了生命周期回调函数。对于数据生命周期的分析能够更准确的发现数据的流向。文献[14]提出的FlowDroid就是一款包含了流、上下文、对象和域等特性的静态分析工具。FlowDroid定义数据流源头和数据流沉淀点,使用向前分析和向后分析技术,分析出从数据流源头到数据流沉淀点的路径,用于识别敏感信息的泄露。
并不是所有发送敏感信息的行为都可以称为隐私泄露,只有用户不知情的情况下才属于隐私泄露。文献[15]提出AppIntent,将信息传输分为在用户知情的和用户不知情的,用来提取出用户不知情的数据传输。它采用符号执行的方法,计算出一系列会导致数据传输的界面交互和数据输入行为。在符号执行的过程中,AppIntent为了避免路径爆炸的问题,采用静态分析方法生成事件空间约束图。事件空间约束图包含了所有能够产生数据传输的界面交互、生命周期回调方法和系统事件。结合生成的时间和数据,事件空间约束图可以确定数据传输是否是用户知情的。
2.3.4 组件间通信分析
在Android安全中,需要对应用内部和应用间的通信通道进行防护。组件间通信作为应用内部和应用之间相互通信的主要方式,被大量研究者进行研究和分析。
文献[16]主要用来检测应用之间通信是否存在相应的漏洞,并提出了ComDroid工具,采用静态分析的方法来对应用进行分析检测。首先将不同的权限映射到不同的危险等级,随后分析反编译出来的文件,追踪其中的Intents、IntentFilters、寄存器、污点槽和组件,最后通过检测Manifest文件和反编译得到的源代码文件来得到组件的相关信息,判断一个组件是否是具有风险的。
对于组件间通信,首先需要找到所有存在的组件,并将其关联起来。文献[17]开发出了一款工具Epicc,将组件间通信的分析转换为IDE的问题。它将所有的应用间通信组件连接在一起,利用Soot解决IDE问题。实验表明,Epicc相较于ComDroid而言拥有更少的误报率。然而,Epicc也存在不足之处,它仅做了简单的字符串分析并且对Content Provider缺乏相应的分析。仅仅分析组件间的关联并不能够准确地对应用内部和应用间通信进行区别。
文献[18]提出了基于组件间通信的污点分析的工具ICCTA,主要用来分析不同组件和不同应用之间的隐私泄露问题。它利用ApkCombiner将2个应用合称为一个应用,进而将应用间通信的分析转换为应用内通信分析。文献[19]对整个应用进行数据流分析,得到组件间通信的数据流图。在数据流图的基础上,针对显示的信息流,构造出数据依赖图。使用生成的数据流图和数据依赖图进行安全分析,检测应用中是否存在数据泄露、数据注入或者API滥用的情况。
特色是旅游解说系统构建的关键。特色的旅游解说系统不仅能够发挥保护水资源,维护水生态的作用,还能够吸引游客。历史和大自然恩赐了蕉城区丰富而宝贵的旅游资源,特别是水利风景资源更是得天独厚,霍童洞天、菩萨道场、瀛洲击水、国师故里、军地文化……,美丽的滨水资源孕育了这些丰富分旅游资源。在旅游解说系统自导式解说的设计上,可以添加特色资源优势,例如在导引牌,指示牌的设计上能够添加特色资源元素。
一个应用可以通过多种方式安装到Android设备上,例如从应用市场下载或者直接通过USB连接安装。针对USB安装的情况,Android4.3提出了ADB验证的功能,对于没有经过RSA密钥对验证的应用程序将不能安装在设备上。
通过对安装时候的检查,判断其是否满足设备上的安全策略,进而对其进行防护。文献[20]在安装应用的时候实现了一组基于权限的策略,通过特定的权限组合定义应用的安全规则。如果应用不符合相应的安全规则,将会提醒用户是否需要拒绝安装。
在安装应用的时候通常提供两种信息,一种是权限信息,另一种是文字信息。为了使终端用户能够意识到安全威胁,现在的这种描述还存在很大的不足。文献[21]开发了DescribeMe。该工具通过使用自然语言处理技术生成应用描述,从用户的角度来帮助用户判别应用是否存在恶意。它的做法是首先从应用中提取所有的行为图,对其进行子图挖掘和压缩,最终形成用户可以理解的基于安全的描述,从而更好地在安装阶段进行防护。
虽然前几个步骤的防护能够有效过滤恶意应用,但是对于一些运行时才能触发的恶意行为缺乏有效监控。考虑到前几个步骤的防护策略存在的不足之处,对运行时态的应用进行持续性的监控,捕获运行操作是十分必要的。运行时防护主要包含访问控制、安全策略、污点分析、权限监控和沙盒控制等多个防护方案。
2.5.1 访问控制
SEAndroid是一款安全增强版本的Android系统,采用MAC机制,将SELinux应用到Android系统中。SEAndroid分别实现了系统核心层面的支持、用户空间层面的支持以及策略配置。SEAndroid推出时间不长,没有得到太多的关注,还需要进一步的完善。
文献[22]利用了机器学习的方法来分析审查日志,捕获审查日志中包含的良性或者恶意接口,从而提供更好的SELinux策略。
2.5.2 安全策略
文献[23]继承了Android的监控机制,并对其进行了扩展。它基于以系统为中心的策略,在运行时检测和阻止应用程序层次的权限提升攻击。同时添加了与组件间通信相关的机制来防止勾结攻击。在SEAndroid和文献[23]的基础上,文献[24]提出了一个基于内核层和中间件层MAC架构的FlaskDroid,从而提供细粒度的策略控制。
文献[25]在Android上提出了分级的策略,将应用分为3种:系统的,可信的和不可信的。在这个框架下面,可信的应用和不可信的应用之间是不能够相互通信的。通过分级的方式来限制不可信应用的功能,进而提供更加安全的运行环境。
当前移动设备的操作系统并没有一个合适的保护机制来控制应用之间、应用和网络之间的相互交流时,跨源攻击便很容易出现。文献[26]针对Android跨源攻击在操作系统的层面上进行了更改。类似于传统的Web程序保护机制,它为应用提供针对跨源攻击的保护。首先告诉开发者他们所接收信息的真正源头,让开发者可以根据这些信息进行相应的保护工作。随后提供一个白名单给开发者,记录他们可以发送或接收信息的源的信息,并且在操作系统中透明且强制地执行策略。这2个步骤可以有效地对源头进行保护。
2.5.3 污点跟踪
文献[27]通过构建一款高效的动态污点跟踪和分析系统TaintDroid来对敏感数据进行监控,从而识别敏感数据和隐私数据的使用方式。通过利用变量级别、消息级别、方法级别和文件级别这4个粒度的污点传播,Android用户可以方便地了解应用程序如何使用它们的隐私数据。后续的一些动态污点分析工具也都使用了TaintDroid作为基础进行相应的分析,并做了一些加强。
2.5.4 权限监控
困惑代理攻击是越权攻击的一种,在各个版本的Android系统中都较为常见。文献[28]在中间层提出了一种权限裁剪的思路。对于被调用者,将其运行时程序权限裁剪至其与调用者权限的交集,从而有效防范越权攻击。
文献[29]对设备上的进程间通信进行跟踪,并记录其调用链。它允许被调用的进程缩减调用者权限。同时,它提出了一种轻量级的签名机制,允许运行在同一设备上的各个应用进行验证。这些特性使得它可以被用来防范困惑代理攻击。
文献[30]提出了VetDroid来对一个应用的权限使用和敏感资源访问进行分析。VetDroid会自动在沙盒中执行应用,通过权限使用分析模块识别出所有的权限使用点和它们的关系,并记录到日志文件中。然后根据得到的日志文件,自动生成行为报告。
2.5.5 沙盒控制
文献[31]提出的Aurasium对应用进行重新打包,提供了用户级沙盒,进而对底层的系统调用进行监控。它可以对底层的关键系统调用进行拦截,判断其具体行为,并向用户给出安全建议。
文献[32]提出了一款自动化代码重写的应用,能够对Java方法层面的调用进行监控。它主要对虚拟机的虚拟方法表进行重写,进而能够控制所有的方法。
文献[33]提供了一种安全沙盒用于读取和运行不受信任的应用。不受信任的软件运行在Boxify虚拟运行环境,不会对系统和用户造成危害。该沙盒的实现主要利用了android中独立进程的特性,不用对OS级别或者应用级别的代码进行重写和设计,也不需要root权限,提供了对不受信的程序的隔离运行。
更新阶段可以分为2种,一种是应用更新,另一种是操作系统更新。应用更新的时候主要还是需要应用市场对其进行甄别和筛选。操作系统更新的时候,需要对所有的应用进行校验,判断其是否满足新的操作系统的安全策略。应用更新的时候,需要判断该应用是否修改了安全策略。
文献[34]针对操作系统更新时可能产生的越权攻击进行了阐述和防护。这类攻击发生的主要原因是在低版本系统中的应用声明了高版本系统新增的权限,一旦更新至高版本,应用的权限就会提升,用来进行攻击。
在Android安全防护领域已经出现了许多十分有价值的安全防护方案。但是,可以想象的是,未来出现的恶意应用的数量会越来越多,恶意应用种类和攻击方式也会越来越多、越来越有针对性。Android安全防护的工作将会变得更加艰巨,需要更深入的研究。
在现有的移动平台的安全防护领域中,学术界和工业界已经出现了许多有价值的工作。其中,防护的层面涉及到Android应用发布的各个环节,包括Android自身系统的增强、开发时的防护、应用市场的分析与防护、安装应用时候的防护、运行应用防护和更新时的防护。当前研究重点集中在应用市场阶段和运行阶段,如果能够在这2个阶段进行有效分析监控,将对Android防护起到至关重要的作用。本文的概述章节总结了Android防护需要面对的问题和各类恶意威胁,本节将分析现有的应用市场阶段和运行阶段的技术应对这些挑战所取得的进展。
3.1.1 应用市场分析阶段
在应用市场阶段,由于具备了大量的计算能力,所以可以对应用进行深入的分析。在此阶段借助相似度匹配技术、权限映射技术、数据流分析技术和组件间通信技术等技术,对应用进行全面的分析。
表1展示了在应用部署的各个阶段的使用技术和Android面临威胁的映射关系,其中×为不能解决,-为部分解决,√为完全解决。
表1 现有Android应用市场防护技术解决面临威胁的情况
相似度计算技术可以有效针对重新打包问题进行解决。计算应用的相似度主要通过提取应用的一些特征,对这些特征进行抽象化,通过抽象出来的模型计算其相似度。应用的一些特征主要包含其应用签名文件、应用配置文件、应用资源文件和应用代码,这些都可以用来进行相似度分析。相似度高的代表2个应用存在大量的类似的实现,两个应用存在重新打包的关系。由于需要计算两个应用的相似度,只需对2个应用的某些关键特征进行分析就行,所以开销较小。
由于Android操作系统实现的API调用较多,其官方文档都有可能存在遗漏。同时,应用开发者对各类API调用所对应的权限也存在一定的误区,这就导致经常会发生滥用权限的问题。针对这些问题,提供一个权限-API调用映射关系就十分有必要了。通过精确地分析应用代码里的API调用,就可以获取其实际使用的权限,为有效防范越权攻击提供了基础的支持。由于权限映射计算需要对Android整个系统的源码进行分析,因此其所消耗的代价较大。
数据流分析技术主要通过构造出应用内部的一些数据流向路径,对应用的敏感信息的流向进行分析。在数据流分析中使用较为频繁的就是构造数据流图和使用静态污点分析的技术进行分析。由于这类技术能够有效跟踪细粒度的数据流向,因此能够很好地解决隐私泄露问题。由于在分析的过程中需要将应用构造成抽象的数据结构,然后再根据所形成的数据结构进行进一步分析,因此其所消耗的代价中等。对于数据流分析,现有的较多的技术存在路径爆炸、误报率较高等缺点,所以,需要今后更加全面的研究,努力减少这些问题所带来的影响。
组件间通信技术主要针对组件间通信的数据流进行有效分析,能够较为有效地应对越权攻击、隐私泄露,针对合谋攻击的话,其能够有效地针对基于组件间通信的合谋攻击,但是针对于系统层级的攻击并不能有效甄别。现有的大部份组件间通信使用对组件的流向进行分析,组件的源和目标进行链接等手段进行研究的,开销较大并且还存在一定的局限性。作为Android最主要的通信机制,今后需要将对组件间通信进行更加深入的研究,提出更多创新的思路。
3.1.2 运行监控阶段
在运行防护阶段,包括了一系列从内核层、中间层和应用层的防护手段,能够提供全面的防护机制,抵御各类攻击。在运行防护阶段主要可以借助访问控制、安全策略、污点跟踪、权限监控和沙盒控制等技术,对应用运行时提供防护。
表2展示了在应用部署的各个阶段的使用技术和Android面临威胁的映射关系。
表2 现有Android运行时防护技术解决面临威胁的情况
访问控制技术主要将Linux系统中的SELinux技术引入Android平台,在中间层和内核层提供访问控制策略,开销较小。能够对于越权攻击、隐私泄露进行相应的访问控制,但对合谋攻击并不能够很好地进行防护。而且在提供访问控制策略的时候,一般都需要对整个系统进行刷新,并不能够提供较为有效的配置手段。对于访问控制技术还需要进行加强,今后在此方面的研究也需要更加深入。
安全策略技术主要在中间层定义相应的策略,在运行时对一些操作进行监控,进而实现更有针对性的防护。例如通过在中间层的实现了一个策略库,对运行时的各项操作定义了相对应的策略。由于需要对内核层和中间层某些关键的数据结构进行监控,因此在运行时也需要动态的去匹配相对应的策略,整体开销较小,但误报率较高。如何定义更加良好的安全策略,能够实现更高的防护率值得研究者进行更加深入的研究。
动态污点跟踪技术作为一种从计算机系统移植过来的技术,拥有广大的理论基础。动态污点技术针对应用内部的可疑的数据进行污点跟踪,首先标记出需要监控的污点,然后针对可能发生泄露的沉淀点进行监控,观察是否存在污点通过沉淀点流出。现有的技术主要从中间层进行修改,在Dalvik虚拟机内部添加标记污点的数据结构,对其进行跟踪。整个修改在中间层进行修改,在运行时需要实时计算被污染的代码片段和数据结构,所以,整个系统的开销较中等。在后续的研究中研究者针对其中存在的不足提出了相应的补充,但是如何利用该技术去防范其他攻击也值得研究,需要研究者们投入更多的精力。
权限监控作为一个较为重要的技术,目标是对Android系统权限相关的问题进行防护,能够有效防护越权攻击和信息泄露。Android系统提供了一个较为重要的机制就是权限,用户只有申请了相应的权限才有能力去访问相应的资源,执行对应的操作。现有的权限监控机制主要在中间件层进行相应的修改,在运行时对发生权限操作的行为进行监控,进而能够有效地防范各类权限相关的攻击,开销较小。
沙盒技术主要为隔离恶意应用提供了方便,任何与外层的通信都可以使用沙盒机制进行有效的防护。该技术能够有效防范越权攻击、信息泄露和合谋攻击,只需要将恶意应用放入沙盒中执行,一旦发生恶意行为,立即对其进行相应的防护即可。应用在沙盒内执行的过程中,需要对沙盒内的应用提供持续不断的监控,所以其性能开销较大。提供一个完整而且有效的沙盒,对于运行时的防护能够起到较好的作用。沙盒机制虽然能够有效防护一些攻击,但是对于较为底层的操作还存在一定的局限性。所以在未来的研究中,还需对上述局限性做更深入的研究。
3.2.1 应用领域
现在的Android设备广泛应用于各个领域,手表、电视、汽车和医疗设备等产品上面都可以搭载Android操作系统,这就需要对各类设备进行针对性的防护。尤其是涉及到用户的生命财产安全方面的,需要更为严格的安全策略来确保万无一失。
3.2.2 计算和存储能力
随着Android手机不断发展,将拥有更为强大的移动计算能力和存储能力。由于计算能力已经得到了显著的提升,今后甚至可以将一部分在应用市场才能完成的任务放到移动设备上进行处理,进而实现更加全面的防护。而存储能力的加强意味着可以存储更多隐私数据,如何针对这些数据进行保护也是一个挑战。
3.2.3 攻击种类
从Android提出到现在应用,攻击的方式以及类型在不断进化,绕过现有的安全机制,来实现恶意目的,防护难度增强。由于攻击者不断更新其攻击方式,因此很难实现一个完善的系统能够抵御所有的攻击。虽然现在存在很多的安全防护机制,但是很多都是针对特定类型的攻击的,不具备普适性。
3.2.4 历史版本遗留问题
历史版本迭代更新频繁,遗留问题增多。虽然现在Android系统已经更新到6.0了,但是还存在很多用户在使用4.0~5.0的版本。每个版本都有新的安全特性加入。旧版本不具备这些新的安全特性,将面临着更大的安全风险。
3.2.5 合谋应用
合谋攻击一直是研究者重点关注的问题,很多安全防护机制不能够完全覆盖其多样性的通信通道。一般说来,合谋攻击存在显示通道和隐式通道2种通道。显示通道一般会包括Intent、套接字、内部存储、共享引用和系统日志,而隐式通道则可能为多样化设置、处理器状态、处理器频率和文件系统的空余空间等。
一般而言,数据流分析和动态监控能够有效地防护显示通道所产生的攻击。但是对于隐式通道,目前还没有较好的方式对其进行处理。对于合谋攻击中隐式通道的防护值得研究者更深层次的研究。
本文介绍Android平台存在的一些安全缺陷和威胁,从应用开发、发布、安装、运行和更新等部署阶段的现有研究出发,分别总结归纳和分析了各个阶段的安全防护措施。在此基础上,通过对比已有工作的优缺点,分析了Android安全防护的机遇与挑战,并展望了未来Android安全领域的前景。
[1] 卿斯汉.Android 安全研究进展[J].软件学报,2016,27(1):45-71.
[2] 张玉清,王 凯,杨 欢,等.Android 安全综述[J].计算机研究与发展,2014,51(7):1385-1396.
[3] TAN D J J,CHUA T W,THING V L L.Securing Android:A Survey,Taxonomy,and Challenges[J].ACM Computing Surveys,2015,47(4):58-99.
[4] ZHOU Yajin,JIANG Xuxian.Dissecting Android Malware:Characterization and Evolution[C]//Proceedings of IEEE Symposium on Security and Privacy.IEEE Computer Society.Washington D.C.,USA:IEEE Press,2012:95-109.
[5] ZHOU Wu,ZHANG Xinwen,JIANG Xuxian.AppInk:Water-marking Android Apps for Repackaging Deterrence[C]//Proceedings of the 8th ACM SIGSAC Symposium on Information,Computer and Communications Security.New York,USA:ACM Press,2013:1-12.
[6] RASTHOFER S,ARZT S,LOVAT E,et al.Droidforce:Enforcing Complex,Data-centric,System-wide Policies in Android[C]//Proceedings of Ninth International Conference on Availability,Reliability and Security.Washington D.C.,USA:IEEE Press,2014:40-49.
[7] ZHOU Wu,ZHOU Yajin,JIANG Xuxian,et al.Detecting Repackaged Smartphone Applications in Third-party Android Marketplaces[C]//Proceedings of the 2nd ACM Conference on Data and Application Security and Privacy.New York,USA:ACM Press,2012:317-326.
[8] CRUSSELL J,GIBLER C,CHEN Hao.Attack of the Clones:Detecting Cloned Applications on Android Markets[C]//Proceedings of European Symposium on Research in Computer Security.Berlin,Germany:Springer-Verlag,2012:37-54.
[9] FELT A P,CHIN E,HANNA S,et al.Android Permissions Demystified[C]//Proceedings of the 18th ACM Conference on Computer and Communications Security.New York,USA:ACM Press,2011:627-638.
[10] AU K W Y,ZHOU Yifan,HUANG Zhen,et al.Pscout:Analyzing the Android Permission Specification[C]//Proceedings of the 2012 ACM Conference on Computer and Communications Security.New York,USA:ACM Press,2012:217-228.
[11] GRACE M C,ZHOU Yajin,WANG Zhi,et al.Systematic Detection of Capability Leaks in Stock Android Smartphones[C]//Proceedings of the 19th Network and Distributed System Security Symposium.Washington D.C.,USA:IEEE Press,2012:19.
[12] LU Long,LI Zhichun,WU Zhenyu,et al.Chex:Statically Vetting Android Apps for Component Hijacking Vulner-abilities[C]//Proceedings of 2012 ACM Conference on Computer and Communications Security.New York,USA:ACM Press,2012:229-240.
[13] GRACE M,ZHOU Yajin,ZHANG Qiang,et al.Riskranker:Scalable and Accurate Zero-day Android Malware Detec-tion[C]//Proceedings of the 10th International Conference on Mobile Systems,Applications,and Services.New York,USA:ACM Press,2012:281-294.
[14] ARZT S,RASTHOFER S,FRITZ C,et al.Flowdroid:Precise Context,Flow,Field,Object-sensitive and Lifecycle-aware Taint Analysis for Android Apps[C]//Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation.New York,USA:ACM Press,259-269.
[15] YANG Zhemin,YANG Min,ZHANG Yuan,et al.Appintent:Analyzing Sensitive Data Transmission in Android for Privacy Leakage Detection[C]//Proceedings of ACM SIGSAC Conference on Computer & Com-munications Security.New York,USA:ACM Press,2013:1043-1054.
[16] CHIN E,FELT A P,GREENWOOD K,et al.Analyzing Inter-application Communication in Android[C]//Proceedings of the 9th International Conference on Mobile Systems,Applications,and Services.New York,USA:ACM Press,2011:239-252.
[17] OCTEAU D,MCDANIEL P,JHA S,et al.Effective Inter-component Communication Mapping in Android with Epicc:An Essential Step Towards Holistic Security Analysis[C]//Proceedings of the 22nd USENIX Conference on Security.USENIX Association.Washington D.C.,USA:[s.n.],2013:543-558.
[18] LI Li,BARTEL A,BISSYANDE T F,et al.IccTA:Detecting Inter-component Privacy Leaks in Android Apps[C]//Proceedings of the 37th International Conference on Software Engineering-Volume 1.Washington D.C.,USA:IEEE Press,2015:280-291.
[19] WEI Fengguo,ROY S,OU Xinming.Amandroid:A Precise and General Inter-component Data Flow Analysis Framework for Security Vetting of Android Apps[C]//Proceedings of 2014 ACM SIGSAC Conference on Computer and Communications Security.New York,USA:ACM Press,2014:1329-1341.
[20] ENCK W,ONGTANG M,MCDANIEL P.Understanding Android Security[J].IEEE Security & Privacy,2009(1):50-57.
[21] ZHANG Mu,DUAN Yue,FENG Qian,et al.Towards Automatic Generation of Security-centric Descriptions for Android Apps[C]//Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security.New York,USA:ACM Press,2015:518-529.
[22] WANG Ruowen,ENCK W,REEVES D,et al.Easeandroid:Automatic Policy Analysis and Refinement for Security Enhanced Android via Large-scale Semi-supervised Learn-ing[C]//Proceedings of the 24th USENIX Security Symposium.USENIX Association.Washington,D.C.:[s.n.],2015:351-366.
[23] BUGIEL S,DAVI L,DMITRIENKO A,et al.Towards Taming Privilege-escalation Attacks on Android[J].Proceedings of Annual Network & Distributed System Security Symposium,2013,130(130):346-360.
[24] BUGIEL S,HEUSER S,SADEGHI A R.Flexible and Fine-grained Mandatory Access Control on Android for Diverse Security and Privacy Policies[C]//Proceedings of the 22nd USENIX Conference on Security.Washington D.C.,USA:USENIX Association,2013:131-146.
[25] ZHAO Zhibo,OSONO F C C.“TrustDroidTM”:Preventing the Use of SmartPhones for Information Leaking in Corporate Networks Through the Use of Static Analysis Taint Tracking[C]//Proceedings of International Conference on Malicious and Unwanted Software.Washington D.C.,USA:IEEE Press,2012:135-143.
[26] WANG Rui,XING Luyi,WANG Xiaofeng,et al.Unauthorized Origin Crossing on Mobile Platforms:Threats and Mitiga-tion[C]//Proceedings of ACM SIGSAC Conference on Computer & Communications Security.New York,USA:ACM Press,2013:635-646.
[27] ENCK W,GILBERT P,CHUN B G,et al.TaintDroid:An Information-flow Tracking System for Realtime Privacy Monitoring on Smartphones[J].ACM Tran-sactions on Computer Systems,2014,32(2):1-29.
[28] FELT A P,WANG H J,MOSHCHUK A,et al.Permission Re-delegation:Attacks and Defenses[C]//Proceedings of Usenix Conference on Security.New York,USA:USENIX Association,2011:22.
[29] DIETZ M,SHEKHAR S,PISETSKY Y,et al.QUIRE:Lightweight Provenance for Smart Phone Operating Systems[C]//Proceedings of USENIX Conference on Security.San Francisco,USA:USENIX Association,2011:23.
[30] ZHANG Yuan,YANG Min,XU Bingquan,et al.Vetting Undesirable Behaviors in Android Apps with Permission Use Analysis[C]//Proceedings of 2013 ACM SIGSAC Conference on Computer & Communications Security.New York,USA:ACM Press,2013:611-622.
[31] XU Rubin,SAIDI H,ANDERSON R.Aurasium:Practical Policy Enforcement for Android Applications[C]//Proceedings of USENIX Conference on Security Symposium.Bellevue,USA:USENIX Association,2012:27.
[32] BACKES M,GERLING S,HAMMER C,et al.AppGuard-Enforcing User Requirements on Android Apps[C]//Proceedings of Tools and Algorithms for the Construction and Analysis of Systems.Berlin,Germany:Springer-Verlag,2013:543-548.
[33] BACKES M,BUGIEL S,HAMMER C,et al.Boxify:Full-fledged App Sandboxing for Stock Android[C]//Pro-ceedings of USENIX Conference on Security Symposium.Washington D.C.,USA:USENIX Association,2015:691-706.
[34] XING Luyi,PAN Xiaorui,WANG Rui,et al.Upgrading Your Android,Elevating My malware:Privilege Escalation Through Mobile OS Updating[C]//Proceedings of IEEE Symposium on Security and Privacy.Washington D.C.,USA:IEEE Press,2014:393-408.