重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
现今,智能手机操作系统不能有效的提供给用户足够的控制权并且很清楚的了解到第三方的应用程序是如何使用其的隐私数据。我们使用了TaintDroid来阐明这个缺点,其是一个高效的,全系统动态污点跟踪和分析系统可以同时跟踪对个敏感数据来源。TaintDroid利用了Android虚拟机的执行环境提供了一个实时的分析。TaintDroid仅需消耗绑定的CPU为基准14%的性能开销对于第三方的应用程序的开销完全可以忽略不计。通过使用TaintDroid监控了Android第三方比较流行的30款软件的行为,我们发现在其中的20款软件中就有68个例子是误用用户隐私信息的。使用TaintDroid监控敏感信息有助于手机用户在使用第三方应用时获得很多的信息对于智能手机有价值的输入对于安全公司也可以有效的寻找出有恶意行为的软件。
为平阳等地区用户提供了全套网页设计制作服务,及平阳网站建设行业解决方案。主营业务为做网站、网站制作、平阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
现代智能手机平台的一个主要特征就是一个集中式的服务下载多数来自第三方应用市场。这样的一个“App stores”不仅方便了用户和开发者,而且已经让手机设备更加的有趣以及有用,因此使得智能手机平台有了一个爆发式的增长。苹果的APP Store仅仅18个月就提供了将近3亿的应用程序。大多数的这些应用程序混合数据时来自本地的传感器像GPS接收器,照相机,摄像头和加速器然后上传到云端。应用程序通常都具有合法的原因来获取用户的隐私数据,但是用户往往希望自己的数据是被正确使用的。程序的开发者中继利用了上传到云端的数据并且这些隐私数据是通过看似无辜的传感器产生的比如说加速计。
解决这种用户体验乐趣和使用第三方的应用软件而带来的隐私冲突在智能手机平台是一个极大的挑战。目前,手机的操作系统提供的仅仅是一个粗粒度的控制访问信息是否一个应用程序可以访问用户的隐私信息,但是没有提供隐私数据是怎样被使用的。例如,如果用户允许应用程序获取到她的地理位置信息,但是她无法得知是否这个应用程序将会送她的应用程序到地理位置服务系统,广告商,应用开发者或者是其他的应用实体。作为这个结果,用户盲目的相信了应用程序将会正确的使用他们的隐私数据。
这篇文章讲了TaintDroid,是针对Android手机平台的一个扩展,通过第三方的应用程序用于跟踪敏感数据流。TaintDroid假设下载的第三方运用程序是不被信任的,通过实时的检测这些应用程序是怎样获取和控制用户的隐私数据的。我们的首要目标是检测当敏感数据通过不信任程序离开我们的系统时通过手机用户或者是外部安全服务来促进对应用程序的分析。
分析应用程序行为要求有足够的上下文信息关于数据将要离开一个设备以及数据将会被送往哪里。因此,TaintDroid自动标记数据的来源从隐私敏感来源以及物地应用标签作为敏感数据传播通过程序的变量,文件,进程间的消息。当污点数据通过网络传播或者是其他的途径离开了系统,TaintDroid将会对这个数据进行标签,应用程序负责传送数据和数据的目的地。这样的实时反馈给用户还有安全服务商更深入的了解到移动的运用程序在做什么,有可能识别出行为不端的应用程序。
对于实用性来说,TaintDroid的性能开销必须要最小。相比于现在的重量级的全系统仿真,我们利用了Android的虚拟化架构整合了四个粒度级的污点传播:变量级,方法级,信息级和文件级。尽管现有的技术都不是新的,我们的贡献在于合并了这些技术并且找到了一个由于智能手机对资源约束在性能和精度之间的平衡点。实验表明我们的原型系统显示跟踪而引起的CPU的运行时候的开销通过微基准测试还不到14%。更为重要的就是,被检测的第三方软件可以被监控并且产生很少的感知延迟。
为了评估TaintDroid的准确性,我们使用了30款随机选取的运用程序,这些流行的Android运用程序会涉及到使用定位用户的地理位置信息,使用摄像头,录音数据等等。TaintDroid正确的标记了这些应用程序中的105例这样的应用程序传输污染路径;在这105例中我们检测到其中的37例是合法的。TaintDroid同样显示了在这30款软件中的15例提供了用户的地理位置信息给远程的广告服务商。其中的7款软件收集了手机的相关信息的ID,例如手机的号码和SIM卡号。总的来说,在我们研究的三分之二的应用程序中都有涉及到使用敏感数据的可以行为。我们的发现揭示了TaintDroid能够帮助解决可能存在威胁的第三方应用程序的敏感行为。
类似于信息流跟踪系统,TaintDroid的一个基本限制可以通过隐式流绕过泄露。通过隐式流避免了污点检测,就这种行为而言,就可以作为恶意软件的一项指标,并且可以通过其他的技术例如自动化的静态代码分析,这一技术我们将在第8章中讨论。
剩余文章的组织如下:第二部分提供更高层次的对TaintDroid的介绍,第三部分会对Android平台的背景做一个介绍,第四部分将会介绍TaintDroid的设计,第五部分描述了TaintDroid对污染源的追踪,第六部分描述了对Android应用程序的研究,第7部分描述了我们原型系统的性能特征,第八部分描述了我们方法的局限性,第9部分介绍了相关工作,第十部分进行相关的总结。
我们试图寻找一个框架允许用户监控第三方智能手机应用程序让他们实时处理他们的隐私数据。许多的智能手机都是闭源的,因此,静态代码分析是不可能的。即使源代码是可用的,运行时事件和配置常常规定了信息使用;实时监控在特殊的环境了占了很重要的比重。
对于网络的监控披露隐私敏感信息存在以下几个挑战:
l智能手机的资源是受限的。由于资源的限制阻碍了像Panorama这样重量级信息跟踪系统。
l第三方应用程序委托了几种类型的隐私数据信息。这个监控系统必须区分各种各样的信息,这就产生了额外的计算和存储。
l基于上下文的敏感信息是动态的,难以识别甚至是当发送的时候才会清晰。例如,地理位置是一系列的浮点数可以很频繁的改变并且很难预测。
l应用程序可以分享信息。如果将监控系统限制在单独的APP里面的话不能够很好的检测文件之间的信息流和应用程序之间的进程通信,包括核心系统的设计到敏感信息的传递。
我们使用动态的污点分析来监控智能手机里的敏感隐私信息。敏感信息是首先用来标记污点来源的,一个污点标示指示信息是被分配好的。动态污点分析标记数据标签是怎样影响其他数据的可能方式是原始的敏感信息泄露。这种追踪方式常常是在指令执行水平上的。最后,受影响的数据将会被标示在他离开系统之前存放到污点池(常常是网络接口)中。
存在的污点跟踪方法通常有几个限制。首先也是最重要的,方法依靠指令级的动态污点分析来做整个系统的仿真将会产生很高的性能消耗。指令级的检测将会是产生2-20倍的性能消耗,除此之外也会招致仿真的性能消耗,因此指令级的动态分析并不适合实时的动态分析。第二,发展中的精确污点传播逻辑已经证明对于X86的指令级是一个很大的挑战。指令级的污点检测可能导致污点爆发如果出现堆栈指针错误或者是污点丢失例如像CMPXCHG,REF MOV这样复杂的指令。然而大多数的智能手机都是使用ARM指令集,类似很多假阳性和假阴极的现象都可能出现。
表一呈现出了我们污点跟踪智能手机的方法。我们利用智能手机的体系架构来提升架构(e.g.,安卓,黑莓,J2ME架构的手机),系统范围的污染使用语义明确细粒度跟踪标签。
图2 TaintDroid的体系结构
Android包含了两种类型的原生方法:内部虚拟机方法和JNI方法。内部虚拟机方法用于访问内部特殊的结构和APIs。JNI方法符合Java本地接口标准规范,这要求Dalvik对单独的java参数传进的变量使用JNI调用桥。相反的,内部的VM方法必须手动的解析从解释出的字节码数组参数。内部虚拟机的方法必须手动解析参数从解释器传来的字节数组的参数。
Binder IPC:所有的Android IPC都需要使用Binder 机制来进行通信。Binder是一个基于组件的进程并且IPC框架设计是为了BeOS,Palm Inc 进行扩展,Google为Android量身定制的。Binder的基础是基于包的,是活跃并且标准数据的序列化,允许应用程序框架层在进程之间管理分享对象。Binder 的内核模块在进程之间传递包的信息。