登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 计算机类 > 物联网工程 > 正文

基于权限的安卓安全:问题与对策外文翻译资料

 2021-12-27 22:24:52  

英语原文共 14 页

基于权限的安卓安全:问题与对策

摘要:安卓的安全问题近年来由于众多的安全攻击和隐私泄露事件成为了学术研究和公众关心的热点问题。安卓的安全性是基于一套在安卓设备上严格限制第三方应用获取关键资源的权限管理机制。由于应用难以获取权限以及管理权限上的麻烦,这样的一套机制受到了应用开发者、市场以及最终用户的批评。在本论文中,我们调查了正在浮现的安卓安全问题,包括授予应用多余的权限、权限管理者能力有限、权限相关文档不足、过多的权限请求、权限扩展攻击、以及TOCTOU(查看使用时间)攻击。我们说明了这些问题之间的关系,还调查了针对这些问题的现存对策,并在技术特性上加以比较。最后,我们提出了几种降低安卓安全隐患的方法

导论

由于安卓智能手机在目前市场上成为最受欢迎的手机设备,安卓的信息安全问题也成为了大众的聚焦点。自从首款使用安卓系统的智能手机在2008年10月问世以来,安卓智能手机在2013年第一季度发货量的统计中成为了世界上手机市场份额占比最大的智能手机。

在2013年5月,Google宣布已经有9亿的安卓设备正在使用。根据网络安全相关公司F-Secure的在2013年的调查,越来越多的家庭和团体正面临着移动病毒的威胁,相较于上一季度数量上升了49%。在第一季度,这些威胁目标中有91.3%是针对安卓设备的。

安卓智能手机使用一套基于权限的框架保护,这个框架严格限制第三方应用获取手机中的敏感信息,例如短信库、扩展储存等。应用对敏感信息的获取可能导致用户经济损失。举个例子,安卓恶意软件会在用户毫不知情的时候发消息带有附加费的消息,拨打昂贵的电话,还会产生大量的网络数据流量。不仅如此,应用拿到获取敏感信息的权限可能导致用户储存在手机中的私人信息泄露,例如联系人,电子邮件,甚至是信用卡号码。第三方开发者可以影响智能手机里GPS、相机、麦克风等传感器,然后让应用做比他们所宣称的功能还要多的工作以不为人知地方式收集用户的私人信息。目前安卓的权限框架中,应用通过在安装时被准许的权限来获取相关重要资源。也就是说,每一个应用必须要在安装的时候请求特定权限来获取在手机系统上的资源,用户也必须决定是否授予这些权限。

这样的框架被批评为过为粗糙,许多应用在安装时会申请过多没有必要的权限。在大多数情况下,用户必须同意所有权限或者放弃安装应用,而不是一个一个地批准申请。另外,权限框架由于在应用里的低效操作控制和缺少对各种权限的说明变得格外脆弱。

安卓的安全问题吸引了许多来自学术界和行业的关注。据我们所知,第一份与安卓安全有关的论文出现在2008年,和第一款安卓智能手机发布是同一年。随着安卓设备爆发式的增长,有关安卓安全的论文也大量地涌现出来。

安卓安全性的背景

安卓系统被认为是移动手机里的一个应用栈。它包含一个操作系统,一个应用框架和一个核心应用。每一个应用在安装时就被当作是一个独一无二执行于一个Dalvik虚拟机实例中的用户。因此,应用在本质上时互相独立的。这样的设计在获取文件和限制由于字符溢出等编程性缺陷可能导致的损害、保障安全性方面被看好。

安卓使用权限严格限制应用获取关键资源。权限是一个由安卓本身或第三方开发者定义的独一无二的文本字符串。根据给安卓开发者的文档内容,目前一共有约130种定义在安卓操作系统中的权限,包括对照相机的控制权、所有的网络访问,到拨打电话,甚至永久性地关闭手机功能。根据Wei等人的研究,安卓定义的权限数量自从第一个发布版本后就逐渐增多。权限增加的原因不仅是为了更好的获取权限,还为了管理新硬件设备的控制权。除了安卓已经定义好的权限外,应用开发者还可以自己定义权限以保护他们自己的关键资源。

在一个应用与系统要求资源时也有可能申请权限,包括调用系统API,读取或向文件系统写入文件。被准许的权限被分配给一个应用的沙盒并被所有的组件所继承,同时提交申请的权限也被分配给应用组件。在包含于应用安装包的清单文件中,应用必须声明它完成工作的所有所需权限,也在此定义用来保护自己组件和资源的权限。每个权限可以被定义为以下四种保护等级之一:

  1. Normal:允许应用调用不会对用户造成损害的API的低危险性权限
  2. Dangerous:允许应用调用可能对用户造成损害的API的高危险性权限
  3. Signature:只有当申请权限的应用程序的数字签名与声明此权限的应用程序的数字签名相同时,才能授予权限
  4. Signature-or-system:只用当申请权限的应用程序的数字签名与安卓系统镜像的数字签名一致或和声明此权限的应用程序有相同的证书的数字签名一致时才能授予权限。

在安装的时候,用户可以看见一个应用程序申请的权限列表,用户必须是全都同意或是全都拒绝这些权限申请。当用户同意并安装应用后,应用就永久拥有在此设备上的权限准许而且在其运行的时候无需再申请一次。安卓通过相关的监视器控制着内部组件通信(ICC)。这个监视器提供一个强制获取控制器(MAC)通过判断应用是否获取必要权限来执行应用是否能够获取相应的组件。

安卓安全性问题的分析

概述

我们在图1总结和描述了安卓安全性问题以及他们之间的关系。我们将这些问题分成两种类型:直接问题与间接问题。直接问题会直接导致经济上的损失或是用户的私人信息泄露。而间接问题会成为对安卓手机发动攻击的垫脚石。

在图1中我们可以看出,直接问题包括申请过多权限,权限扩展攻击和TOCTOU(查看使用时间)攻击,而权限定义过于宽泛且不明确、权限管理人员能力不足和低效的权限文档是间接问题。不合适的权限定义会导致不必要的权限申请并让用户更难察觉。特别说明的是,TOCTOU攻击就是由于共谋命名而存在于安卓中。需要指出的是,用户在同意第三方应用的自定义权限后,即使卸载了此应用也不能撤销此授权。除此之外,假如一个恶意软件需要一个和已授权权限名字相同的权限时,恶意软件无需用户的同意就能获取该权限。

另一个问题是多余的INTERNET权限申请。举个例子,恶意软件的开发者们在离线游戏中申请网络权限用来展示广告,当用户被成功欺骗同意这个看似合理的权限申请时,恶意软件的开发者会利用这个多余的网络使用允许属性偷偷地获取网络访问费用。

能力有限的权限管理人员和低效的权限文档时导致过分的权限申请的原因之一。潜意识里授予正当软件所有权限的举动会被恶意软件所滥用。例如,恶意软件可以实施混淆代理攻击以滥用正当软件的权限。

图1展示了间接问题是如何通过内在的关系或是外在的关系导致直接问题。那些利用拙劣的权限管理机制的恶意开发人员必须利用这个机制留下的漏洞来实施攻击。例如,一个不完善的管理机制会不小心同意需要访问关键数据的软件安装。鉴于这个弱点,恶意增加权限攻击可以由恶意软件实施。另外,对于实施TOCTOU攻击的黑客,首先必须诱使用户同意安装一个恶意软件。在另一方面,定义宽泛的权限、能力有限的权限管理者和不充分的权限文档会直接导致过分多的权限申请。

图1:安卓权限机制中各类问题之间的关系

定义宽泛的权限

虽然安卓官方定义了130种权限,但其中的大多数定义地比较粗糙。特别是INTERNET权限、READ_PHONE_STATE权限和WRITE_SETTINGS权限当作为应用获取特定资源的途径时被定义为太过粗糙。以INTERNET权限为例,这个权限允许应用向所有域名发送HTTP(S) 请求,直接允许连接到特定的目的地和端口。结果是INTERNET权限只能提供低效的应用所有联网功能的控制。据Barrera et al.在2010年的调查,62.36%从谷歌应用商店下载的样本应用使用此权限,然而Felt et al.发现在他们浏览的应用中只有36%的应用使用INTERNET权限发送HTTP(S)请求到特定域名。这些应用依赖远程服务器来获取内容,就像是网络浏览器。除此之外,大约7%的应用申请INTERNET权限用来支持从单个域名获取广告的Google AdSense。这说明许多应用可以适应一种只允许应用访问一串特定的域名的限制性INTERNET权限。

虽然INTERNET权限对例如在线游戏的诸多应用来说是必须的,但是这个权限的使用是用户无法完全限制或是控制的。因此会有很多恶意软件把自己伪装成十分需要网络资源的正当软件,并在用户毫不知情的情况下随意使用网络连接。

能力有限的权限管理者

在权限授予的过程中有两个十分重要的角色:开发者和最终用户。开发者在清单文件中写下应用需要的权限,然后用户同意这些权限请求。在同意之后,应用在运行时就可以使用这些权限。另外,应用市场会验证这些软件。如果应用是在应用市场里下载的话,他们会跳过权限授予的过程直接安装。

不幸的是,开发者和用户都缺少专业知识。另外,开发者于用户存在利益冲突。当开发者在清单文件中写下他的应用所需要的权限时,他们不知道应用的使用者同意这些申请后会面临怎么样的危险。虽然会有一些敬业的开发者会花时间去研究130种权限的每一种权限的功能以及如何正确地使用这些权限,但还有许多开发者为了自己地应用能够正常运行而申请了过多不必要的权限。

在终端用户方面,据Felt等人的调查,只有3%的网上被调查者完全回答正确三个权限问题,24%的实验室调查参与者有所了解但不完全清楚。

不全面的权限文档

Google公司为安卓应用开发者提供了大量的文档,当时关于如何在安卓平台上使用权限的内容非常有限。据Felt团队的调查,缺少权限用法的信息会导致开发者犯错。在安卓 2.2文档中需要使用78个方法请求权限,然而,Felt团队.的测试表明,权限请求需要1259个方法,是文档提及的16倍。官方文档在几个类文件中列出了额外的权限,但是类中的哪个方法需要所声明的权限并不明确。不仅如此,安卓权限文档中有六个错误被证实。这种不全面和不准确的权限信息导致安卓应用开发者产生困惑,因此可能会导致猜测、估计以及重复地尝试。这导致这些有缺陷的应用成为渴望安全性和隐私性的用户的潜在隐患。

而且,权限有关的内容对于用户来说太过专业,难以理解。以INTERNET权限为例,当一个用户读到FULL INTERNET ACCESS的权限描述“允许一个应用创建网络套接字连接”时,他会觉得这样的描述太过复杂和抽象。用户并不知道当他同意这个权限时会面临的威胁。

要求太多权限

要求过多的权限可能是安卓安全性面临的最大的威胁。它直接打破了最少特权准则(PLS)。这个违反PLS的操作将用户直接推到面临隐私泄露和经济损失的潜在危险中。例如,如果单机游戏应用拥有了并不是必须的SEND_MESSAGE权限,则该权限可能在用户不知情的情况下发送带有附加费用的信息。

Felt 团队已经证实56%的违规应用仅多申请一项不必要的权限,而94%的应用有4项或更少的多余权限。当平均到每个程序上,少量的申请多余权限说明开发者尝试着添加正确的权限申请而不是随意地申请大量的不必要的权限。Felt团队总结出开发者会因为以下几个原因做出错误的决定:首先,开发者会因为权限似乎与他们开发的功能相关而尝试申请该权限,即使这些权限事实上并不相关;其次,开发者会因为应用分发的需要申请他们并不需要的权限;最后,开发者会因为复制粘贴,用已经过时的权限和测试工具的需要产生错误。

就如图1所述,多余权限申请问题可以分为两类:恶意的和无意的。其他的问题,包括权限定义过于宽泛、能力有限的权限管理者和低效的权限文档都是由申请过多权限产生的。

图2:权限扩展攻击的分类

权限扩展攻击

与大众广泛认为安卓恶意软件对于一个应用沙盒攻击造成的损害非常有限不同的是,权限扩展攻击允许恶意软件在不需要明确地申请对应的权限的情况下与其他软件合作以获取重要资源。

图2展示了权限扩展攻击的分类。权限扩展攻击分类可以分为代理混淆攻击和共谋攻击两种。

代理混淆攻击利用了已经授予权限的正当应用的无保护接口的薄弱点。如图3所示,应用A1没有被授予权限P1,C1是A1的一个组件且无法直接获取由权限P1保护的系统资源。然而如果应用A2被授予权限P1并且A2的一个组件C2并不需要任何权限就能访问,那么C1就能通过C2访问R1和访问C2本身。

除此之外,共谋攻击是由多个应用分别获取一组足够他们实施越权或是恶意行为的权限来执行的。共谋攻击又可以由应用的通信方式分为应用直接通信的直接共谋攻击和应用间通过第三方应用或组件通信的间接共谋攻击两种。

间接共谋攻击通常需要其他能够提供公开或是隐蔽通道的应用或是组件作为中介。通过这样的通道,例如字符流、文件和I/O设备,使用一个数据对象作为占据某种信息的实体。换句话说,这个实体通常被看作是一个数据容器对象。其他一些公开的通道包括公开的偏好、系统日志和UNIX套接字通信。

相比之下,公开通道使用的实体通常不被用作通信。通过公开通道绕过中间件层是可能实现的。公开通道的例子包括文件锁、屏幕状态转变、震动设置、意图的类型、线程枚举等等。Marforio团队测量了公开和非公开通道的吞吐量,结果表明即使是低吞吐量的隐蔽通道交换隐私信息的效率也非常高。

TOCTOU攻击

安卓中之所以会有TOCTOU薄弱点的主要原因是由于命名共谋。在命名一个新的权限时没有命名的规则或是限制。而且,权限在安卓中是以字符串的形式表示的,即使是属于两个不同的应用的两个相同权限字符串也会被当作是等价的。恶意软件开发人员会利用这个弱点。假设一个恶意软件开发人员诱使用户安装声明了权限Prsquo;的恶意软件A,然后另外一个恶意软件B申请这个权限Prsquo;。这个权限Prsquo;与保护重要资源的P有相同的名字。之后当用户卸载了应用A再安装了声明权限P的应用C。这样,恶意软件B就可以使用权限Prsquo;来获取重要资源了。根据Shin团队,这个TOCTOU漏洞存在于安卓1.5、1.6、2.0和2.1,不论是虚拟机还是真机上。另外,Frag

资料编号:[3310]

您需要先支付 30元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图