外文翻译资料

 2022-07-25 13:44:43

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


Android智能手机泄漏检测

摘要

近年来,智能手机增长迅猛。要管理这样的手机信息和功能,Android提供了要求每个应用程序明确请求的权限在安装运行之前,它基于权限的安全模型。在本文中,我们分析了八大热门Android智能手机和发现原生态手机图像不正确执行的权限模型。几个特权权限不安全暴露于不需要请求他们的实际使用的应用程序。为了确定这些泄露的权限或能力,我们已经开发了一个名为啄木鸟工具。我们有八个手机图像结果表明,在13个特权权限检查中,到目前为止,11个被泄露,个别手机泄露多达八个权限.通过利用他们,不受信任的应用程序可以设法消灭用户数据,发送SMS消息,或影响手机来记录用户通话 - 所有这一切不要求任何许可。

介绍

近年来,智能手机增长迅猛。据IDC[24]的数据,在2010年第四季度智能手机厂家出货1.009亿台,相比在世界各地范围的92.1万台个人电脑。在历史上第一次,智能手机销量超过了个人电脑。他们的知名度可部分归因于令人难以置信的功能和方便的智能手机提供给终端用户。事实上,现有的手机不是简单的制造设备为了电话和接收短信,而是功能强大的通信和娱乐平台,用于网上冲浪,社交网络,GPS导航,和网上银行。功能丰富的设备的扩散以及引人注目移动应用程序(或简称应用)也刺激了智能电话的普及。特别是,这些移动应用程序可以很容易地访问和下载运行从各种应用商店的[2]。例如,据报道[22],谷歌的Android Market已经承载15万的应用程序在2011年2月,在不到9个月的时间里,可用的应用程序的数量已经翻了两番。此外,它不是唯一的官方的智能手机平台供应商(例如,苹果和谷歌)所提供的应用程序商店承载成千上万的应用程序;第三方供应商(例如,亚马逊)为用户提供独立通道浏览和安装应用程序来竞争市场。

毫无疑问,移动用户越来越依赖在智能手机上储存和处理个人数据。 在手机中,我们可以发现有关于用户[3]的当下(或过去)的地理位置信息,电话日志的存放和接收电话,各种联系信息的地址簿,以及缓存的电子邮件和内置摄像头拍摄的照片。信息的类型和数量保存在手机中自然会导致各种问题[13,14,27,42]有关于私人信息的安全,包括它管理和访问的方式。

为调解访问各种个人信息和某些高级电话功能,智能手机平台厂商已经探索出许多方法。例如,苹果采用的是审批过程,每个第三方应用必须审查通过后,才能在App Store中可用。安装应用程序后,在用户的第一次使用的时候,苹果的iOS平台将提示用户批准使用在应用运行时的某些功能。从另一个角度看,谷歌定义了一个基于权限的安全模型在Android机型要求每个应用程序在访问个人信息和电话功能前明确请求权限。本质所要求的权限定义用户可以授予一个Android应用程序的能力。换句话说,它们允许用户在一开始衡量应用程序的能力并决定是否要安装该应用程序。由于基于许可的的中心作用运行于Android应用上,这种模式的关键在于正确地执行在现有的Android智能手机。

在本篇中,我们系统地研究八大热门的Android领先制造商的智能手机,其中包括HTC,摩托罗拉和三星,并惊讶地发现这些原生态手机图像无法正常执行基于许可的安全模型。具体来说,有几个特权(或危险)使得保护访问的敏感用户数据或手机功能不安全地暴露给那些不需要获得实际使用权限应用,使得他们可以使用。为简单起见,我们使用术语内存泄漏代表应用程序可以访问权限但没有实际请求权限的情况。每个这样的情况本质上违反了Android上基于许可的安全模型。

为了便于暴露泄漏的能力,我们已经开发了一个名为啄木鸟系统。通过采用预加载的应用程序数据流分析,啄木鸟系统地分析了手机上的每个应用程序从一个公共的,无人防守的接口探索一个危险的权限的可达性。为了更好地研究可能泄漏的能力,我们的系统区分两种不同的类别。明确的能力泄漏允许某个应用通过利用一些公开访问的接口或服务本身不实际要求这些权限成功访问某些权限。隐能力泄漏允许相同,但不是利用一些公共的接口或服务,允许某个应用获得或从其他应用程序“继承”具有相同签名密钥(大概是由同一作者)权限。因此,明确的泄漏表示严重的安全错误,因为他们颠覆Android中的基于权限的安全模型,而隐含的泄漏可能会歪曲提供给应用程序的功能。

我们已经实现了一个原型啄木鸟来发现这两种类型的泄漏基于Android的智能手机。我们目前的原型侧重于保护敏感的用户数据(例如,地理位置)或手机功能13个代表特权的权限(例如,能够发送短信)。我们已经用我们的原型检查八大热门Android手机:HTC Legend/ EVO 4G/Wildfire S,摩托罗拉Droid/ Droid X,三星Epic 4G,和谷歌Nexus One/ Nexus S。研究结果表明,这13个特权权限中,11明确了泄露,与个别手机泄露多达八个权限。特别是,通过利用这些泄露的能力,在这些受影响的手机不受信任的应用程序可以设法消灭在手机上的用户数据,发送SMS消息(例如,收费电话号码),记录用户通话,或者获取用户的地理的位置 - 所有一切不要求任何许可。

系统设计

我们的目标是识别能力泄漏,比如,一个应用程序可以访问权限,而无需实际要求它的情况。每一个这样的情况基本上本质是Android的基于权限的安全模型。在这项工作中,我们选择把重点放在使用的预加载应用程序为Android手机固件的一部分,这些权限,因为固件可以访问一些权限而被授予第三方应用。为简单起见,我们使用术语“权限”和“能力”可以互换。

图1提供了系统的高层次概述。为了检测这两种不同类型的能力泄漏(即显性和隐性),我们的系统将执行两套互补的分析。具体地,以暴露显式的泄漏,系统首先定位在手机的那些(预加载)的应用程序,有这样的能力。对于每一个这样的应用程序,系统然后确定一个公共接口是否被暴露可用于访问它。 (这个公共接口本质上是在应用程序的清单文件,也就是说,活动,服务,接收器或内容提供者定义一个切入点。)换句话说,一些公共接口出发,存在即可以到达一些使用执行路径的能力。如果此公共接口不被许可要求看守,并执行路径不具有到位的检查,以防止它被另一个无关的应用程序调用,我们考虑这样的泄漏。然后我们的系统报告这种泄漏,并进一步提供的证据表明可以用来塑造输入测试泄漏能力。

在另一方面,隐性能力泄漏出现于可选属性的清单文件的滥用,即“sharedUserId。”这个属性,如果定义,使多个应用程序由同一个开发者证书签名分享用户标识符。由于权限授予用户标识符,这将导致所有的应用程序共享相同的标识被授予每个应用程序所要求的所有权限的并集。在共享用户标识符的应用程序检测这种泄漏,我们的系统会报告未请求的能力,这怀疑已要求另一个应用程序由同一作者开发。我们强调,一个隐含的泄漏,需要安装的应用程序的某种组合:一个应用程序试图获得未经授权的能力,只能这样做,如果另一个应用程序,使用相同的共享用户标识和签名密钥,安装授予其他权限。在手机上的预加载应用程序的情况下,我们可以找出这样一个串通应用程序是否存在。然而,由于这一事实,我们不能排除安装后应用程序相互关联的可能性,它仅仅是没有不表明这样一个隐含的泄漏是“安全”的,以后可能发生。

在这项工作中,我们考虑在智能手机用户的手机上安装一个第三方应用程序的情况。第三方应用程序的作者有手机的系统映像的必要权限,目的是恶意进行一些高权限的活动(例如,记录用户的电话交谈)通过由权限检查保护的Android的API。要做到这一点,攻击者选择不请求所需的权限,以躲避检测或这些权限不能授予第三方应用程序。 (例子包括定义为签名signatureOrSystem [17]这些权限)。同时,我们限制假设Android框架(包括OS内核),攻击者的范围是可信的。此外,我们假设签名密钥的系统图像没有被泄露给攻击者。给定这些约束,恶意应用程序就无法直接访问的高特权的API。然而,由于许多预加载的应用程序有相应的权限,如果它可能会导致这些应用程序之一调用代表其所需的API,恶意应用程序将获得了获得了极高的特权功能。

显性泄漏

在已请求感兴趣的功能在其清单文件中的任何预加载的应用程序可能会出现明确的能力泄漏。为了检测这些泄漏,每个这样的应用程序我们的制度分析分两步。第一步,可能的路径识别建立一个控制流图从一个定义良好的切入点,找出可能的路径(manifest文件),以一些使用能力。在这之后,第二步骤中,可行路径细化采用场和路径敏感过程间数据流分析,以确定哪些这些路径是可行的。

可能的路径识别

给定一个被检查的预加载的应用程序,系统首先提取其的Dalvik字节码,然后生成一个控制流图(CFG)来定位可能的执行路径。由于构建CFG是一个精心研究的话题,我们在下面的重点是那些Android的具体方面,使我们的任务变得复杂。

第一个问题来自的Dalvik字节码间接控制流转移指令造成的。Dalvik是针对一个假想的计算机体系结构,它不支持大多数形式的间接控制流转移。事实上,在Dalvik的机器语言的唯一间接转置是由于Java等效指针:对象的引用。然而,对象引用,而通常作为参数传递一个应用程序的方法中,并且由于继承它往往是不可能明确地确定一个基准代表什么具体类。在我们的分析中,对象引用也必然要求相关对象的类型解析。在我们目前的原型,我们采取保守的方法。具体而言,在分析应用程序的Dalvik的字节码的时候,我们的系统维护一个全面的类层次结构。当遇到一个类似的参考,我们考虑所有可能的分配类。这是一个很简单的方法,但不会引入任何漏报。

另一个问题是来自Android的事件驱动性质。特别是,由于大量的Android框架使用回调,应用程序的执行往往通过框架中的应用在其他地方出现。对于一个具体的例子,考虑java.lang.Thread类。这个类是用来实现本地线程,它使用的Android以达到更好的用户界面的响应。开发人员可以简单地扩展这个类中,实现run()方法,然后再调用start()方法来安排线程。然而,如果我们仅分析包含在应用中的代码中,run()方法不会出现可到达的状态(从start()),尽管start()方法被调用后,控制流穿过的Dalvik虚拟机底层的线程调度,并最终运行run()方法。换句话说,Android的事件驱动性质将不可避免地导致CFG建设一些不连续性,如果我们只专注于分析应用程序代码(图2)。幸运的是,超越CFG建设,这中间的框架代码是没有特别的价值,我们的分析,并在Android框架API的行为是明确的。因此,我们利用这些定义良好的语义,这两种方法直接在控制流图链接,解决过程中的不连续性。我们已应用该策略的若干其他的回调,如那些用于消息队列,计时器和GPS位置更新。

Android的使用事件是如此的核心,它甚至表现在Android应用结构的平台。这导致了最终的并发症,因为Android应用程序并不一定只有一个入口点。相反,而不是某种传统的“主要手段”,一个Android应用程序包含在其清单文件中定义的一个或多个组件。每个组件都可能通过定义活页夹IPC机制提供多个入口点。把这些因素考虑进去,我们的原型通过在清单文件中构建CFG定义的每个入口点迭代。在每个CFG,我们找到可能的路径,每一个指示从一个已知的切入点是行使感兴趣的特定权限点的可达性。

可行的路径细化

在前一步骤产生的控制流图可以代表潜在路径的巨大数量。在这些可能的路径,不是所有的人带来了行使感兴趣的权限的危险通话,而那些做的,不是所有的都是可行的。因此,我们采用的过程间数据流分析来查找可行路径,并导致危险的呼叫。

具体来说,我们使用符号路径模拟,路径敏感的数据流分析技术。底层直觉是程序执行的路径可以建模为一组节目的状态中,每个依赖于最后。对于此状态的集合是可行的,每个程序点(或指令)必须遵循从前面的人。其他数据流分析技术类似,符号路径模拟实现了一个迭代算法,在定点收敛。在每个节目处,该组输入状态通过一传递函数(代表由该指令执行的操作)以产生一组输出状态送入。然而,这些输出状态被用作输入状态该程序点接班人之前,我们验证其限制是一致的。以这种方式,不可行的路径不是通过分析前馈。

作为现场和路径敏感符号模拟算法(由算法1中总结),我们的方法考虑通过一个程序的多个类似的具体路径上一次,凝结成的方法,涉及其输入到其输出参数摘要。在分析每个状态编码与限制的数据字段的值,使一些类似的国家彼此结合在一起。具体地讲,该算法以标准方式进行数据流分析操作:一个工作列表被维持积极考虑的状态,以及一个传递函数用来从给定的状态产生新的状态(delta;)。仅新状态加入到工作列表,所以最终的算法,代表所有从一个给定进入点到达的可行状态的解收敛。

通过考虑Android平台的某些性能,我们可以在许多方面的优化我们的算法。例如,我们加快使用方法汇总,以避免递归考虑同样的方法调用链多次的过程。为了节省空间,加盟(而不是简单地增加)新州的工作列表,并参观了状态列表使算法更好的规模无论在时间和内存方面。我们的实现识别放置在每个内存项的值约束,并尽可能将积极合并类似的状态。举个例子,如果两个国家都加入了,只有一个布尔值是否为真或假的不同,所产生的状态会直接删除的布尔值任何限制。以这种方式,较少的状态需要被记住的,利用传输函数delta;计算更少的后继。

此外,由于一个Android应用程序可以定义多个入口点,有需要制作一组单独为每个潜在路径。这些路径不包括之前的入口点,排除这样的代码作为设置应用程序的初始状态的任何构造的任何应用程序执行的指令。由于这样的事实,在一个应用程序的入口点可以以任何顺序被调用,我们选择通过假设一个字段可能包含任何可分配值采取一种保守的方法。作为电场是沿着执行的路径中使用,可能

全文共6063字,剩余内容已隐藏,支付完成后下载完整资料


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

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。