英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料
关于权限的安卓安全性问题与对策
摘要:
最近发生了许多起关于安卓平台的安全攻击和隐私泄露事件,导致安卓安全性成为了学术研究领域和公众关注的热点问题。安卓系统建立在一个基于权限的机制上,它限制了第三方安卓应用程序对安卓设备关键资源的访问。这种权限机制受到了开发者、管理者和用户的批评,因为应用权限控制十分粗糙,而且管理起来困难。在本文中,我们探讨了几个有关安卓安全性的突出问题,包括权限的粗糙程度、不完全的权限许可、不充足的权限文件、权限过度、权限提升攻击和时间差(从检查到使用的时间差)攻击。我们阐明了这些问题之间的关系,探讨了现有的对此和解决方法。特别是我们对这些对策的发展做了系统回顾,并根据技术特点进行比较。最后我们提出了几种方案,以进一步解决安卓系统的风险。
简介
随着安卓智能手机成为目前市场从最优化能源的移动设备,安卓的安全性成为了信息安全领域的焦点。自从第一款安卓手机于2008年10月交付以来,安卓智能手机已经占据了全球最大的市场份额,在2013年第一季度智能手机出货量中占75%。2013年五月,谷歌宣布已经有九亿台安卓设备被激活。根据网络安全相关公司F-Secure所述,从上个季度开始,一些新的移动威胁上升了49%,其中91.3%是针对2013年第一季度上市的安卓设备。安卓智能手机受权限框架的保护,这个框架会限制第三方应用程序访问安卓智能手机的敏感资源,比如短信数据库和外部存储。敏感资源的访问可能会导致资金流失。例如,安卓恶意软件在无需用户认可的情况下,可能会发送有关资产比例的消息,并产生大量网络数据。敏感资源的访问甚至会导致用户存储在手机里的隐私信息泄露,例如联系人、邮件和信用卡账号。第三方应用程序开发人员可以利用智能手机上的各种传感器,例如GPS、摄像头、麦克风等去偷偷收集用户私人信息。在当前的安卓权限框架中,会在应用程序安装时进行权限控制。也就是说,每个应用程序在安装时就必须获取到特定的权限用以访问系统资源,而是否给予权限是用户来决定的。
这样的权限框架因为太过粗糙被诟病。许多应用程序请求的权限比必需的要多。在多数情况下,用户必须同时授权应用程序的所有权限请求或选择不安装,而不能只允许其中一部分权限请求。此外,因为对应用程序和文件如何使用各种权限的控制不充分,使得这种权限框架十分脆弱。
在学术界和工业界,安卓系统的安全问题都备受关注。据我们所知,有关安卓安全的论文早在2008年初就出现了,同年第一款安卓手机上市。随着安卓设备在随后几年的爆炸性增长,大量关于安卓安全的研究论文都已发表。鉴于大量出版的关于安卓安全的研究,特别是安卓的权限框架,我们系统的概述了当前安卓系统的安全性问题。特别是,我们调查了有关安卓权限框架的安全性、识别问题的最近发展,并分析了对策已解决安全问题。
文章接下来的部分概括如下:第二章,介绍安卓安全性的背景;第三章,将安卓权限框架的问题进行分类;第四章,探讨现有的解决安卓安全性问题的方案;第五章,讨论未来的工作;第六章,本文的总结。
安卓系统安全问题的背景
安卓是移动设备的软件协议栈。它由操作系统、应用程序框架和核心应用程序组成。每个安卓应用程序在用户安装后,都在一个独立的Dalvik虚拟机中单例运行。所以应用程序是基本独立的。这种设计提供了安全文件的访问方式,以防由于程序缺陷,例如缓冲区溢出造成的破坏。
安卓利用权限限制关键资源的访问。权限只是一个独特的文本字符串,可以由安卓系统或第三方开发者定义。根据安卓开发文档,现有130种权限已经在安卓操作系统中被定义,包括获取摄像头、利用互联网、拨打电话号码、甚至是永久禁止手机功能。自从第一版发布后,安卓权限数量不断增加。权限扩张的目的不仅在于提供更精细的权限划分,同时也控制访问硬件的功能。除了安卓定义的权限,应用程序开发人员也可以自定义权限,以保护自己的关键资源。
当应用程序与系统资源之间进行交互时,可能需要使用权限,包括调用系统接口函数以及文件系统读写。权限被授予到应用程序的沙盒中并且被所有的应用程序组件继承。在应用程序的manifest文件中,声明了它实现功能和保护自身组件资源所需要的所有权限。权限可以分为以下四种保护级别:
- 普通:低风险权限,允许应用程序访问的不会对用户造成伤害的API,例如设置壁纸。
- 危险:高风险权限,允许程序访问存在潜在伤害的API,例如READ_CONTACTS,可能会造成用户私人数据泄露或手机设备被控制。
- 签名:申请权限的应用程序所使用的签名证书与定义此权限的应用程序使用的证书一样,那么此权限可被授予。
- 签名或系统:申请权限的应用程序所使用的签名证书与定义此权限的应用程序或安卓系统使用的证书一样,那么此权限可被授予。
在安装应用的时候,用户可以看到应用的权限列表。用户必须同意全部授权或拒绝授权。在用户批准权限请求并安装应用程序后,该应用会一直拥有这些权限,运行时不再发出请求。安卓控制组件捡通信机构近期通过一个参考监视器。这个参考监视器提供了一种强制访问控制方法,通过评估应用程序是否有授予某权限的必要,来控制应用程序访问组件的权限。
安卓安全问题分析
概述
图1 安卓权限机制问题间的关系
我们总结了安卓安全性的问题并将它们之间的关系描绘出来,如图1所示。我们将这些问题分成两部分:直接问题和间接问题。直接问题可能导致资金损失或者用户隐私信息泄露。另一方面,非直接问题可能成为安卓智能手机被攻击的垫脚石。如图1所示,直接问题包括权限过度、权限提升攻击和时间差攻击,而其余的部分,包括粗粒度权限、管理员权限和不充足的文件权限都属于间接问题。粗粒度权限可能会导致权限过度并使得用户难以监测。特别是,如果一个用户在批准第三方应用程序的权限请求后又突然不安装了,该权限也不会被撤销。在这之后,如果一个需要授权权限的恶意应用程序与一个被授权的应用程序名字相同,那么恶意应用可以不用授权而直接使用权限。
考虑一下粗粒度的互联网权限问题。举个例子,一个恶意的开发者可能声称其开发的独立游戏需要互联网权限来显示广告。如果用户轻易相信网络请求的合法性,恶意开发者就可以利用网络权限悄悄开启付费网站。不完全的权限管理和不充分的权限文档可能会导致意外的过度权限,会不自觉的给良性或恶意应用程序分配权限。例如,恶意应用程序可以使用一个良性应用程序的权限来完成其混淆副攻击。在3.6节中将重点讲述混淆副攻击。图1表示了间接问题如何通过某些关系导致直接问题。例如,一个不称职的管理者可能不相信批准了一个想要访问关键资源的应用的安装。这个漏洞使得在恶意应用程序启动时,会发生权限升级攻击。另外,一个恶意的开发者如果想对用户进行时间差攻击,攻击者必须有道用户去安装这个恶意应用程序。另一方面,粗粒度权限、不称职的权限管理和不全面的权限文档可能导致过度权限。
权限粗粒度
虽说安卓系统定义了130种权限,但它们大多数都是粗粒度的。尤其是互联网权限、读取照片权限和设置权限,它们可以让应用程序随意访问某些资源。举个关于互联网访问权限的例子,互联网访问权限允许应用程序向任何域发送http请求并连接任意地址和端口。其结果是,互联网访问权限可以满足应用程序的所有互联网访问请求。据研究表明,从谷歌商店下载的应用程序中,62.36%使用了互联网权限。然而,有36%的应用程序使用互联网权限只访问了特定的域。这些安卓应用程序依赖远程服务器获取内容,更像是网络应用程序。此外,约7%的应用程序使用网络权限支持谷歌光合或在webView里显示单个广告。这表明许多应用程序只是从服务器获取数据而不需要访问互联网,它们可以使用一个限制更加严格的网络权限。
然而对很多网络游戏来说,网络权限是必要的,这种权限的使用并不能被用户限制或控制。结果可能是恶意程序会将自己伪装成一个合法的应用程序以获得网络权限,在用户没有批准的情况下访问互联网。
不称职的权限管理器
开发人员和用户等角色都参与了授权应用程序权限的过程。开发者在manifest文件里写明应用程序的权限请求,而用户批准这些请求。在批准后,应用程序开启时就自带了这些权限。另外,应用市场可能会将应用程序进行分类。如果应用程序退出了市场,他们可能会终止许可授权。
不幸的是,开发者和用户通常都缺乏专业知识。另外,开发者和用户可能会有利益冲突。当开发者在manifest文件里声明其应用程序所需的权限时,他可能不知道如果用户批准这些权限会带来哪些风险。虽然一部分开发者可能会花时间去学习这130个权限并且适当的进行请求声明,但其他开发人员可能只选择简单的过度权限以确保他们的应用程序可以工作。
对用户的网上调查表明,只有3%的用户能正确回答出三个关于权限的理解问题,24%的用户理解有些片面。
不充分的权限文档
谷歌公司为安卓开发者提供了大量的文档,但关于如何使用权限的内容却很少。调查显示,权限使用信息的缺乏可能会导致开发者犯错。在安卓2.2的文档中,提供了78种权限的请求方法。文档列出了几种额外的权限,但对于这些权限的请求方法描述不确切。同时,安卓权限文档里定义了六种错误。安卓权限文档的不充分和不精确使得安卓开发者十分困惑,他们在开发程序时可能会进行许多次似是而非的尝试。因此,这导致有缺陷的应用程序将会威胁到安卓用户的隐私与安全。
此外,有关权限的内容对于用户来说太难理解。例如网络权限,当用户阅读到关于“完全互联网接入:允许应用程序连接任何互联网接口”,他们通常会觉得这种描述太过复杂难以理解。用户也就不会得知如果他们批准了这些权限将会面临怎样的风险。
权限过度
权限过度是安卓安全问题里最常见的。它直接破坏了最小特权原则。违反最小特权原则将会暴露用户的隐私并导致资金损失。例如,如果一个独立的游戏应用在不必要的情况下请求短信权限,那么这个权限的批准可能会在用户不知情的情况下发送付费短信。研究发现过度特权的应用程序中,有56%只请求了一个非必需的权限,94%申请了4个以上。应用程序对于权限的要求较低表明开发者尝试添加正确的权限,而不是请求大量不必要的权限。开发者可能会因为以下几个原因犯错:第一,开发者倾向于请求看上去与他们开发的功能相关的权限,即使是非必需的权限;第二,开发者可能会请求副应用的权限;第三,开发者可能会因为复制粘贴而出错。
如图1所示,权限过度的问题可分为以下几种:恶意的和无意识的。其他三个问题都是由权限过度造成的。
增强型的设计与实现
权限过度的对策
权限过度的检测。对于安卓平台的权限过度检测,2011年菲尔特等人手动评审了十八款免费和付费的谷歌商店应用。对于每一个应用,菲尔特通过用户界面的请求对比其功能所需的权限。四分之一的应用程序都有权限过度问题,而网络权限过度占其中三分之一以上。
菲尔特基于编译平台建立了一个自动检测权限过度的工具——偷渡者。偷渡者分析了940款应用程序并确定其中三分之一的应用声明了不必需的权限。最常见的不必需权限包括网络状态、读取照片、接入wifi、读取存储和拨打电话。这些非必需权限可能会被恶意应用程序利用。在2012年,维等人利用偷渡者测试了237个第三方应用程序,遍及1703个版本。结果表明,版本更新的大体趋势是权限过度。19.6%的应用程序更新是为了加入新的权限,25.2%是为了初始化特权,在版本更新时保留其权限,仅有11.6%将过度权限更新到合法程度。
金等人建立了一个静态分析工具,它可以通过检查整个安卓源代码来捕获每个接口的权限请求。在对比过工具产生的权限列表和manifest文件中的后,金等人发现在1260个应用中有543个都至少请求了一个额外权限。
增强系统的实现。在2010年,诺曼等人建议进行安卓扩展,一个界面简单易于操作的允许用户进行选择性授权的应用程序安装器。当用户安装应用程序时,可以逐个同意或拒绝权限授权。利用这个安装器,即使在应用程序被安装后,用户依旧可以同意或终止某些权限。
在2011年,贝雷斯福德等人提出了一款允许用户在应用运行时终止权限的程序。例如,当应用程序试图获取设备号时用户可以提供一个假的数据。其他类型的数据也可以替换成假的,例如定位、互联网、短信、日历、联系人和广播消息。
哈瑞克等人提出了应用栅栏,它可以用影子数据代替私有数据。与默克机器人道理相同,当一个应用程序想要获取关键资源例如设备号或定位信息时,应用栅栏会提供一个虚假数据。
周等人开发了安卓私有模式——TISSA。这个私有模式允许用户灵活的控制个人信息被应用的获取情况,例如设备号、联系人和定位。同时根据用户的请求,程序在允许时其权限也可动态改变。对于每种个人信息,TISSA支持四种选择去保护信息:空白、匿名、伪造、信任。空白选择向应用程序返回空白结果。匿名选项会从初始个人信息中选择一个不介意应用透露出去的匿名版本。伪造选项会提供假数据。最后,信任选项将会提供原始个人数据。
广告库的分离。皮尔斯等人设计的AdDroid、谢卡尔等人设计的AdSlplit和莱昂等人的工作,都是为了阻止应用程序由于使用广告库而申请过度权限的对策。因为他们的工作比较类似,接下来以AdDroid为例做分析。在2012年,皮尔斯等人对谷歌商店进行了一项研究,发现49%的安卓应用至少包含一个广告库,为了能使用这些广告库,46%的开发者们选择申请权限。含有广告请求的应用中,有56%因为广告商的要求而试图获取定位信息。为了解决这个为,AdDroid介绍了一种新的广告API,可以在安卓平台上进行广告商的权限申请同时与主应用的权限申请区分开来,允许应用在不获取隐私敏感权限的情况下展示广告。
比较。表1总结了有关权限过度对策的对比。
菲尔特等人使用Stowaway去监测和定量分析安卓应用的权限过度问题,维等人利用相同的工具但
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[151982],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。