分析在Android应用程序之间的通信外文翻译资料

 2022-11-26 20:22:05

英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料


分析在Android应用程序之间的通信

Erika Chin

Adrienne Porter Felt

Kate Greenwood

David Wagner

美国加州大学伯克利分校
伯克利,CA,美国

摘要

现代智能手机操作系统支持第三方应用程序的开发与开放系统api。除了开放API,Android操作系统还提供了丰富的应用程序之间的消息传递系统。这样可以鼓励应用程序之间的合作,减少开发人员负担,从而促进了组件的重用。不幸的是,消息传递应用程序也攻击表面。消息的内容可以嗅,修改,被盗,或更换,用户隐私妥协。同时,恶意应用程序可以注入伪造或者恶意消息,从而导致违反用户数据和应用程序违反安全策略。

我们检查Android应用程序交互和在应用程序组件识别安全风险。我们提供一个工具,ComDroid,检测应用程序通信的漏洞。在应用发布之前,开发者可以使用ComDroid来分析,应用评论家可以在android市场分析应用程序,最终用户也可以分析。在ComDroid帮助下我们分析了20个应用程序,发现34可利用的漏洞;20个应用中的12个程序至少有一个弱点。

分类和主题描述:

D.2.5(软件工程):测试和调试;

D.4(操作系统):安全与保护

一般条款:

安全

关键字

Android,消息传递、意图、手机安全

介绍

在过去的十年里,手机已经从简单用于电话和短信的的设备变成可以运行的第三方软件的设备。手机用户不再局限于简单的通讯录以及其他操作系统和手机制造商提供的基本功能。 他们可以自由定制选择手机安装第三方应用程序。手机制造商支持第三方应用程序开发人员通过提供开发平台和软件商店(如安卓市场,苹果应用商店[1,3])来发布他们的应用程序

Android的应用程序通信模型进一步促进丰富的应用程序的开发。Android开发者可以利用现有的数据和其他应用程序提供的服务,同时仍然允许一个单一的印象,无缝应用程序。例如,餐厅检查应用程序可以问其他应用程序来显示餐厅的网站,提供地图和餐厅的位置,餐厅。这种通信模型减少了开发人员负担和促进功能重用。Android达到这样的目标,将应用程序分成组件,提供一个消息传递系统,组件可以内部和跨应用程序通信。

如果使用不当,Android的消息传递系统可以成为攻击表面。在本文中,我们讨论Android消息传递和识别不安全的风险开发实践。如果一个消息发送者错误地指定收件人,那么攻击者可以拦截消息机密性或。如果一个组件不限制谁可以发送消息,然后攻击者可以注入恶意信息。

我们已经看到许多来源不明的恶意手机应用程序。例如,SMS消息间谍职业伪装本身作为一个提示计算器,并将所有发送和接收的短信转发给第三方。同样,MobiStealth记录短信,呼叫历史,浏览器历史、GPS定位等等。这是令人担忧的,因为用户依靠手机来执行私有和敏感的任务,如发送电子邮件拍照,进行银行交易。因此重要的是要帮助开发者编写安全不泄露或更改用户数据的应用程序的一个对手。

我们检查它创建Android通信模型和安全风险,包括个人数据丢失和腐败,钓鱼,和其他意想不到的行为。我们提出用工具ComDroid分析这些漏洞的Android应用程序来检测潜在的实例。我们用ComDroid来分析20个应用,并且发现12个应用中存在34个程序漏洞。大多数这些漏洞源于这一事实意图可以用于内部和应用程序之间的通信,所以我们提供的建议改变Android帮助开发者区分内部和外部的消息。所以我们提供修改Android的建议,帮助开发者区分内部和外部的消息。

2.安卓系统概述

Android安全模型与标准台式机的安全模型显著不同。Android应用以相互不信任的原则互相对待。它们互相分离,并且不会分离获取其他应用的私人数据。我们提供一个概览的Android安全模型和下一步需要通信设施。Android的消息传递系统的复杂性意味着它拥有最大的攻击表面。在第6节,我们将Android和其他手机操作系统做比较。

2.1威胁模型

Android市场包含了广泛的第三方应用程序,用户可以根据不同的信任级别。

安装应用程序。用户从未知的来源安装应用程序,开发人员和受信任的应用程序处理私人信息,如财务数据和个人照片。例如,一个用户可能安装高度信任银行应用程序和一个免费的游戏应用。游戏不应该能够获得访问用户的银行账户信息。

在Android安全模式下,所有应用程序被视为潜在的恶意。每个应用程序都在其自己的进程低权限用户ID,并默认应用程序只能访问自己的文件。这些隔离机制旨在保护应用程序与敏感信息免受恶意软件。

尽管他们默认的隔离,应用程序可以通过消息传递进行通信。沟通会成为攻击向量。如果开发人员不小心暴露功能,那么应用程序可以执行了一个不受欢迎的行动。如果开发人员将数据发送给错误的收件人,那么它可能泄漏敏感数据。在本文中,我们考虑如何使得应用程序可以防止这些沟通建立攻击。

除了提供应用程序之间的隔离,Android系统安全模型保护API。默认情况下,应用程序没有能力与系统的敏感部分API进行交互;然而,用户可以授予应用程序在安装期间额外的权限。我们不考虑操作系统的袭击;相反,我们从每个其他操作系统上专注于保护应用程序。

2.2意图

Android提供了一个复杂的消息传递系统,目的是用来连接应用程序。一个意图是一个消息,声明一个收件人和可选地包括数据;一个意图可以被认为是一个独立的对象,它指定了一个远程过程调用,包括相关的参数。应用程序使用意图都需要通信应用程序之间和应用程序内部进行通信。此外,操作系统向应用程序事件通知发送意图。我们称这些信息系统为广播意图。

意图可以用于显式或隐式通信。显式意图指定一个特定的应用程序应该送到指定的意图,而隐式意图请求交付的任何应用程序支持所需的操作。换句话说,一个明确的意图识别预期的接收者的名字,而隐式意图让Android平台来确定哪个应用程序应该接受的目的。举个例子,考虑一个含有联系人信息的应用。当用户点击一个联系人的街道地址,联系人应用程序需要问另一个应用程序来显示该位置的地图。为了达到这个目标,联系人应用程序可以直接发送一个显式意图谷歌地图,或者可以发送一个隐含的意图,这些将被运送到任何应用程序映射,它提供的功能(如说。,雅虎地图或者必应地图)。使用显式意图保证目的是交付给接收者,而隐式意图允许不同的应用程序之间的延迟运行时绑定。

2.3 组件

意图传递给应用程序组件,组件是合乎逻辑的应用程序构建块。Android定义了四种类型的组件:

bull;活动提供用户界面。活动以意图开始,他们可以返回数据来调用组件完成。所有应用程序可见部分都是活动。

bull;服务运行在后台,并且不会和用户互动。下载一个文件或压缩存档都有可能发生一个服务操作的实例中。其他组件可以绑定到一个服务,它允许绑定调用目标服务的接口中声明的方法。意图用于启动和绑定到服务。

bull;广播接收器接受发送给多个应用的意图。接收器收到触发的一个适当的意图,然后在后台运行来处理事件。接收器通常是短暂的;他们经常传递活动或服务的信息。有三种类型的广播意图:正常,无序,和有序。正常广播发送到所有注册的接收器,然后消失。有序广播提交到一个接收器;同时,任何接收方交付链的有序广播可以阻止它的传播。广播接收器有能力设置接收命令的优先级的广播。粘性广播在被发送后,仍然可以被其他的接收器再次接受到。

bull;内容提供商是数据库应用程序定义的uri寻址。他们是用于内部数据持久存储和应用程序之间共享信息的机制。

意图可以被四大组件里的三个发送:活动,服务,和广播接收器。意图可以被用来启动活动。开始,停止,绑定服务。发送广播信息给广播接收器。(表1标示了相关方法签名)。所有形式的交流都可以用显示或者隐式意图来传达。默认情况下,一个组件接收只有内部应用程序意图(因此不是外部可调用)。

2.4组件声明

为了接受意图,组件必须在应用清单中定义。清单是一个配置文件,它伴随在安装应用程序。开发人员使用清单指定外部意图(如果有的话)应该传递给应用程序的组件

2.4.1 出口一个组件

对于一个活动或者服务来说,使用它之前一定要在清单中定义。(广播接收器可以在清单中定义,也可以在运行中定义)。一个组件考虑是出口的还是公开的,主要取决于是否设置了EXPORTED标志位或者至少有一个意图过滤器。出口组件可以从其他应用接受到意图。意图过滤器特别指出何种意图应该被发送到出口组件中。

Android确定哪些意图应该送到一个导出的组件并且匹配每个意图的字段组件的声明。一个意图包括一个组件名字,动作,数据,策略,额外数据以及子集。开发人员通过指定接收方组件名称发送一个显式意图,然后送到意图组件的名称。隐式意图缺乏组件名称,所以Android使用其他领域来确定一个适当的接收者。

一个意图过滤器可以通过行动限制进入的意图,数据,和类别;操作系统将匹配这些约束的意图。操作指定一个通用操作执行,数据字段指定类型的数据操作,和分类提供了操作执行的附加信息。例如,一个组件,编辑图片可能会定义一个意图过滤器,它可以接受任何意图的编辑操作和数据图像/ *是谁的MIME类型。一个组件是一个合格的接受者的意图,它必须指定每个行动,意图中包含的类别和数据在自己的意图过滤器。一个过滤器可以指定更多的操作、数据和类别的意图,但不能少于一个。

多个应用程序可以注册组件处理相同类型的意图。这意味着操作系统需要决定哪些组件应该得到的意图。广播接收器可以指定优先级(作为其意图过滤器的一个属性)来指示操作系统适合的组件是如何处理一个意图。命令发送广播时,优先级最高的意图过滤器首先将收到的意图。活动之间的关系通过要求用户选择首选应用程序来解决(如果用户没有设置一个默认的选择)服务之间的竞争决定通过随机选择一个服务。

重要的是要要注意意图过滤器不是安全机制。发送方可以分配任何行动、类型或类别,它想的意图(除了某些行为,只有系统可以发送),或者它可以完全绕过过滤系统与一个明确的意图。相反,一个组件可以处理任何行动,类型,或类别,不管它是否真正适合所需的操作。

2.4.2保护

Android限制访问系统API与权限,并且应用必须在清单文件中申请合适的权限来获得访问受保护的api。应用也可以使用权限来保护它们自己。应用可以指定调用者必须通过在清单文件里面添加一个权限请求来访问,或者在整个应用中设置一个默认应用。开发者也可以在代码中动态添加。相反,一个广播意图发送方可以通过要求收件人的许可来限制谁可以接收意图。(这个保护只对广播意图有用,对活动和服务的意图无用)。应用可以用已存在的权限也可以自己定义一个新的权限。

所以的权限都有保护层来决定需要的权限的困难度。这有四个保护层次:

bull;自动正常权限授予。

bull;危险权限可以由用户在安装过程中授予。如果权限请求被拒绝,那么应用程序没有安装。

bull;签名权限仅仅是如果请求应用程序定义了相同的开发人员签署的许可。签名权限用于限制组件访问一组小的应用程序开发人员的信任和控制。

bull;如果应用需要签名要求或者应用安装在系统应用文件中,SignatureOrSystem权限将会被授予。来自Android市场的应用不能安装在系统应用文件中。系统应用程序必须由设备制造商预装或被高级用户手动安装的。

想要给强保护的应用可以要求调用者拥有更高策略的权限。举个例子,BRICK权限可以用来禁用设备。这是操作系统定义的签名权限,也就意味着只有谷歌制作的应用才能使用这个组件。相比之下,一个正常权限下受保护的组件本质上是不受保护的,因为任何一个应用都可以简单获得许可。

3基于意图的攻击表面

我们从意图发送者和接收者的角度来检查Android通信的安全挑战。在3.1节中,我们会讨论意图发送给一个错误的应用会怎样导致泄漏用户信息。数据可以被窃听者偷走,权限会意外的在应用间传输。在3.2节,我们讨论与接受额外意图的漏洞,例如,来自其他应用的意图。如果一个组件意外的成为共有的,那么其他应用可以通过意外的方法唤醒它,并且可以注入恶意的数据进去。我们将在3.3节中总结Android通信安全指南。

通过我们对组件安全的讨论,我们将我们的注意力放在出口的组件上。Non-exported组件无法访问其他应用程序,从而不受我们在座的攻击。我们也排除导出那些受到保护的组件和广播意图,也就是其他应用不可以访问的。2.4.2节中解释说,正常的和危险的权限不提供组件或意图很强的保护:正常的权限是自动授予的,危险权限是被用户授予的。然而签名以及系统签名权限是很难包含的。我们默认那些签名和系统签名的组件和广播意图都是私有的。

3.1未经授权的意图接收者。

当一个应用发送一个显示的意图,里所以当的这个意图将被接收者受到。恶意应用程序可以拦截一个隐式意图通过声明一个意图过滤器的所有操作,数据,和类别中列出的意图。恶意应用程序然后通过匹配任何的意图来获得访问所有的数据,除非意图缺乏受保护的权限。拦截也会导致控制流攻击,如服务拒绝或者钓鱼攻击。我们考虑攻击是如何的安装在广播接收器,活动,和服务所携带的意图上。我们还讨论如果拦截,尤其危险特殊类型的意图,。

3.1.1广播盗窃

广播可以容易被动窃听或主动拒绝服务攻击(图1)。一个窃听者可以不通过拦截广播,而安静的读取广播的内容。当应用程序发送一个公共广播。这里就存在窃听风险。(公共的广播是一种隐含的意图,不是保护的签名或系统签名许可)。一个恶意广播可以通过创造一个意图过滤器,列出所有可能的动作,数据,以及策略来窃听所有的公共的广播。对于接收者或者用户来说,这里没有任何指示来告诉他们广播以及被读了。粘性广播

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[29765],资料为PDF文档或Word文档,PDF文档可免费转换为Word

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

发小红书推广免费获取该资料资格。点击链接进入获取推广文案即可: Ai一键组稿 | 降AI率 | 降重复率 | 论文一键排版