关于安卓系统安全的权限:问题和解决方案外文翻译资料
2022-10-10 14:31:13
英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料
关于安卓系统安全的权限:问题和解决方案
摘要
由于在安卓平台上大量的安全攻击和隐私泄漏,安卓系统的安全一直是学术研究和公众关注的热点。安卓安全性建立在一个在安卓设备上限制第三方安卓应用程序对安卓系统的关键资源的访问的权限机制。这些权限机制由于它的应用权限的不好控制和开发者,市场营销热源和终端用户的权限难以管理而被广泛批评。在本文中,我们调查了安卓系统安全所产生的问题,包括权限的粗粒度,不合适的权限管理,权限不足的文件,超过要求的权限,权限升级攻击和TOCTOU(检查时间使用的时间)攻击。我们阐述了这些问题之间的关系,并且研究了解决这些问题存在的措施。特别地,我们提供了对这些对策应用的一个系统的审查,并比较它们之间的技术特征。最后,我们提出了几种方法,以进一步减轻安卓系统化安全的风险。
关键词:安卓安全,安全权限,访问控制,访问控制授权,策略管理,权限的过度索求,权限升级攻击
简介
随着智能手机成为目前市场上最受欢迎的移动设备,安卓系统安全就一直处于信息安全的聚光灯下。自从第一款安卓系统手机在2008年10月(冈萨雷斯,2008年)被推出,安卓智能手机已经在2013年第一季度占全球智能机市场最大的份额(75%)。在2013年5月,谷歌公司宣布9亿的Android设备被激活(韦尔奇,2013)。根据F-Secure公司(一家网络安全公司)所述,受新的移动设备危害的家庭的数目比上一个季度上升了49%;在2013年的第一季度,来自于安卓设备的这些危害占91.3%。
安卓智能手机被基于限制架构第三方应用访问敏感资源,例如SMS数据库以及安卓智能手机的外部存储的权限所保护。对敏感资源的访问可能要费钱。例如,安卓的恶意软件可能会发送收费信息,拨打收费电话,以及产生大量不受用户认可的网络数据。而且,对敏感资源的访问可能会导致存储在智能手机中的隐私泄漏,如通讯录、电子邮件、甚至信用卡号。第三方应用程序的开发者可以借助各种智能手机的传感器,如GPS、摄像头和麦克风,去开发应用程序。应用程序做的比他们所说的要多,偷偷地收集用户的隐私。在现在的安卓权限框架中,访问智能手机的关键资源是根据应用程序在安装时得到的权限被控制的。或者说,在安装软件时,每一个应用程序都必须请求某些权限来访问智能手机的系统资源,并且智能手机的用户可以决定是否授予权限。
这些基于权限架构被作为粗细度所批评。很多应用程序往往请求比必要权限更多的权限。在大多数情况下,用户必须授予应用程序请求的所有权限,或是终止软件安装进程,而不是一个接一个地授予权限。除此之外,由于应用程序之间的协调不足的控制和差劲的观月如何使用各种权限的文档存在,权限架构是很脆弱的。
安卓系统安全已经引起了学术界和行业的关注。据我们所知,有关安卓系统安全的论文早在2008年,也就是第一部安卓智能手机上市的这一年就有了。伴随着接下来几年安卓设备爆发性增长,相当数量的的有关安卓系统安全的论文被发表。
在大量的有关安卓系统安全的论文发表的,特别是安卓的权限框架的情况下,我们对安卓系统安全的现状进行了系统的总结。特别地,我们研究了安卓系统安全最近的进展,鉴别了安卓权限框架方面的问题,并且分析了解决安全问题的应对措施。
本文的剩余部分介绍内容如下:第二部分介绍了安卓系统安全的背景;第三部分阐述了安卓权限框架的问题;第四部分研究了解决安卓安全问题的可行方案;第五部分讨论了未来的工作;最后,第六部分是总结全文。
安卓系统安全的背景
安卓是被用作移动设备的一个软件栈。它包含一个操作系统、一个应用框架和核心应用程序。每一个安卓应用程序在一个独立的在安装时被指定了唯一的用户身份的Dalvik虚拟机器中运行。这样,应用程序基本上是分离的。这种设计会提供文件访问安全并且限制由于程序设计的缺陷如缓冲区溢出的潜在危害。
安卓使用权限限制访问关键资源。权限仅仅是个唯一的可以通过安卓系统或者第三方开发者定义的文本字符串。根据为安卓开发者写的文档,目前有130种权限。这些权限在安卓操作系统中定义,包括访问摄像头、访问网络权限、拨打电话,甚至是永久地停用电话功能。根据Weiet等人的研究,自从第一个版本被广泛使用,安卓定义的权限不断增加。权限扩展的目的不仅为了提供了细粒度的权限,还为了控制访问新的硬件功能。除了安卓的权限,应用程序开发者也可以声明定制的权限来保护自己的关键资源。
当一个应用程序与系统资源交流时,包括调用系统API函数,以及读取和写入文件系统,可能需要权限。当需要申请的权限分配给应用程序组件时,被授权的权限分配给应用程序的沙盒,并且被所有的应用程序组件继承。在一个被包括进应用程序包的应用程序的清单文件中,应用程序声明了让需要的权限来实现它的功能,也定义保护它自己的组件和资源。一个权限可以被下列四种保护级别之一分配:
·Normal:低风险权限,允许应用程序调用对用户无风险的API。
·Dangerous:高风险权限,允许应用程序调用存在潜在危害的API,如泄漏用户的私人数据或控制智能手机设备。
·Signature:只有当请求权限的应用程序的数字签名与定义此权限的应用程序的数字签名相同时,才能授予权限。
·Signature-or-system: 只有当请求权限的应用程序在相似的安卓系统或与定义此权限的应用程序的数字签名相同时,才能授予权限。
在安装时,会显示应用程序请求的权限列表,用户可以选择授予或者拒绝这些权限。在用户允许这些权限请求并安装应用程序以后,该应用程序在整个生命周期中都拥有这些权限,在运行时不需要再次请求权限。安卓通过标准监测器控制件间通信(ICC)。标准监测器通过评估应用程序是否被授予了必要的权限,为应用程序访问组件提供了强制访问控制(MAC)。
安卓系统安全问题的分析
概述
我们总结了安卓系统的安全问题并且在图1中阐述了他们之间的关系。我们把问题分为两类:直接问题和间接问题。直接问题可能导致经济损失、或者用户隐私的泄漏。另一方面,间接问题可能被用作攻击安卓智能手机的垫脚石。
图1 关于安卓权限机制的问题关系图
如图1所示,直接问题包括过度要求权限、权限提升攻击、TOCTOU攻击。其它的是间接问题,包括权限的粗粒度、不称职的权限管理员、不充足的权限说明文档。权限的粗粒度可能会导致权限的过度要求,使用户更难检测到权限的过度索求。需要注意的是,由于命名冲突TOCTOU攻击才存在于安卓系统。特别地,即使用户在授予权限后卸载了第三方应用程序,授予的权限也不会被撤销。在这之后,如果恶意的应用程序需要一个与已授权的权限签名相同的权限,那么该恶意应用程序可以在未经批准的情况下直接使用这些权限。
考虑一下粗粒度的网络权限问题。一个例子是,一个恶意的开发者可以声称网络权限只是被用来在单机游戏上显示广告。当用户相信合法的网络权限请求而被欺骗时,恶意的开发商可以利用网络权限的粗粒性特征,来私密地访问收费的网站。
不称职的权限管理员和不充足的权限说明文档可能导致意外的权限过度索求。无疑,授权给一个良性的应用程序的过度索求的权限可能被恶意应用程序利用。例如,一个恶意的应用程序可以用混淆的代理攻击来利用良性的应用程序的权限。对混淆代理攻击更多细节在第3.6节给出。
图1表明通过隐示或显示的关系,间接问题会导致直接问题。对于一个为了利用不称职的权限管理员的漏洞的恶意的开发者来说,他或她一定会利用不称职的权限管理员在应用程序中留下的漏洞发起攻击。比如,一个不称职的权限管理员可能会无意地允许一个程序的安装安装可以访问关键资源。考虑到此漏洞,提升攻击的权限可以通过恶意程序启动。除此之外,对于一个对用户发起了TOCTOU攻击的恶意的开发者来说,攻击者必须首先欺骗用户安装恶意应用程序。另一方面,权限的粗粒度、不称职的权限管理员以及不充足的权限说明文件可能会导致权限的过度索求却不需要任何中间过程。
权限的粗粒度
即使安卓系统定义了130种权限,但是大都是粗粒度。特别是网络权限,读取电话状态权限,读取或写入系统设置权限,它们给一个应用程序任意访问关键资源的权利,都是粗粒度的。以网络权限为例,网络权限允许应用程序向所有域名发送HTTP请求,并连接任意的域名和端口号。结果,网络权限因为权限供应不足而增强应用程序对网络的访问控制。根据Barrera等人的研究,在2010年,62.3%的应用程序使用该权限在谷歌应用商店下载。然而,Felt等人发现他们研究的应用程序,其中大约36%的应用程序使用网络权限发送HTTP请求到特定的域名。这些应用程序依赖远程服务器来获取信息,就像网络应用一样。还有,大约7%的应用程序使用网络权限来支持谷歌广告,谷歌广告在Web视图的单一区域发布广告。这表明许多应用程序都可以容忍只允许应用程序访问特定的域名列表的限制的网络权限。
然而网络权限对于许多应用程序都是必要的,例如联网的游戏,该权限的使用不能被用户限制或控制。结果,恶意的应用程序可能会伪装成确实需要网络访问的合法应用程序,却在用户不知情的情况下滥用网络访问权限。
不称职的权限管理员
有几类人,像开发者,最终用户,都参与到了授权应用程序权限的过程中。开发人员编写清单文件为应用程序请求权限,终端用户对其授权。经授权后,应用程序就可以在授予的权限下运行。除此之外,应用市场可以验证应用程序。如果应用程序从应用市场下架,他们可以终止授权过程。
不幸的是,开发人员和终端用户通常缺乏专业知识。此外,开发人员和终端用户可能有利益冲突。当开发人员为他的应用程序编写清单文件为他或她的应用程序请求权限时,开发人员可能不能详细地知道如果开发人员开发的应用程序被授予了这些权限后,对于终端用户哪些是风险。尽管一些热情的开发人员可能花费时间去了解130个权限请求的用法,并规范地使用他们。但是其他开发人员可能仅仅选择过度索求的权限,以确保他的应用程序无论如何都能工作。
对于终端用户,Felt等人的研究显示仅仅有3%的调查的受访者正确回答了所有的三个权限理解问题,24%的实验室参与者说出充足但不完美的理解。
不充足的权限说明文档
谷歌公司为安卓应用程序开发人员提供了大量的文档,但是对于如何使用安卓平台上的权限说明是有限的。根据Felt等人的研究,权限使用说明的缺乏可能导致开发人员出错。在安卓2.2说明文档中,提供了有78种权限申请方法。然而,费尔等人的研究表明有1259种权限申请方法,是说明文档中的16倍。文档中在几个类的描述中列出了几类额外的权限,但是类请求规定权限的方法不清楚。还有,在安卓权限说明文档中存在6处错误。不充足且不精确的权限信息混淆了安卓应用程序开发人员,使他们可能会在猜测、假设和反复尝试过程中来开发应用程序。因此,这导致了会成为安全方面的威胁,并且侵害安卓用户的隐私的有缺陷的应用程序出现。
进一步说,对于终端用户理解来说,权限内容通常太专业化了。以网络权限为例,当终端用户读取关于网络连接的权限说明:允许应用程序创建网络套接字,他或她常常觉得这些描述太复杂和深奥。用户可能不知道当请求权限授权时,他们将会面对怎样的风险。
权限的过度索求
权限的过度索求可能是对安卓系统安全最严重的威胁。它直接违反了最小权限原则(PLP)。违反最小权限原则会造成用户潜在的隐私泄漏和经济损失。例如,如果一个单机游戏要求请求不必要的发送短信权限,并可以无需用户确认直接发送溢价率信息。
Felt等人研究发现56%的权限过多的应用程序只有一个额外的不必要的权限,94%的有4个或者更少的额外的权限。较低程度的权限过度索求的应用程序表明开发人员试图添加正确的权限,而不是任意申请大量的不必要的权限。开发人员可能会因为几个原因做出错误决定,Felt等人总结如下:首先,开发人员往往根据他们设计的相关功能请求权限,即使权限不是所需要的;其次,开发人员可以通过代理的应用程序而不是他们自己的应用程序来请求权限;最后,开发人员可能因为使用复制、粘贴、不赞成的权限和测试工具而出错。
如图1所示,权限的过度索求问题可以被分为:恶意的和无意识的。三个其他的问题,包括权限的粗粒度、不称职的权限管理员、不充足的权限说明文档,是过度索求权限的驱动。
权限升级攻击
与安卓恶意软件造成的危害对于应用程序的沙盒来说是有限的这一普遍认识相反,权限升级攻击允许恶意的应用程序与其他应用程序协作,不用明确地请求相应的权限,去访问关键资源。
图2 权限升级攻击分类图
图3 权限升级攻击图
图2显示了权限升级攻击的分类情况。权限升级攻击可以分为两类:混淆副攻击和协作攻击。
混淆副攻击利用良性的应用程序的未受保护的接口留下的漏洞。如图3所示,应用A1没有授予权限P1;C1,是A1的组件,不能直接访问被P1保护的系统资源R1;然而,如果应用A2被授予了权限P1,并且A2的组件C2不需要申请任何访问权限,那么C1间接地可以访问R1。所以C1可以通过C2到C2来访问R1。
此外,协作攻击能够通过多个应用程序产生组合的权限,这些组合权限可以使他们执行未经授权或者恶意的行为。协作攻击可以根据应用程序联系的方式更进一步的分为直接协作攻击和间接协作攻击,直接协作攻击是指应用程序之间直接联系;间接协作攻击是指应用程序之间通过第三方应用程序联系。
间接协作攻击常常涉及到另一个应用程序或者组件作为桥梁,可以提供公开的渠道或者隐秘的通道。公开的渠道,像缓冲区、文件、I/O设备等,用数据对象作为实体去保持一定的信息。换句话说,实体是一个对象,通过被看作数据容器。关于公开渠道的其他例子有共享资源、系统日志以及UNIX套接通信。
相反地,隐秘渠道使用一般不用于通信的实体。用隐秘渠道绕过中间层是可能的。关于隐秘渠
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[151626],资料为PDF文档或Word文档,PDF文档可免费转换为Word