TaintDroid:智能手机监控实时隐私信息流跟踪系统(四)
6 应用程序研究
这部分的报告是应用程序的研究,通过使用TaintDroid来分析30款流行的应用程序是怎么使用用户敏感数据的。选取的应用程序可以根据相应的权限通过Internet获得各种各样的用户数据。我们研究发现三分之二的这些数据暴露了用户详细的地理位置信息,唯一的电话标示,以及电话号码通过在安装的时候授予一些看似没有危险的访问权限。这个发现证实了TaintDroid可以用来监控运行时的用户的隐私敏感数据以及能过准确的监控相关的应用程序的数据暴露。
6.1 实验装置
在2010年初的一项调查是关于在Android Market上的每个类别最受欢迎的50款免费的应用程序(总数是1100个)揭示了大约三分之一的应用程序(358/1100)通过联网获取了地理位置,照相机,以及音频数据。从这些软件当中我们随机的挑选了30款最受欢迎的应用程序(占样本总数的8.4%)覆盖了12个类别。表 2列举了这些应用程序在安装是要求的权限。注意这些并不能反映出进入并且使用敏感数据。
我们研究了者三十个下载的应用程序通过启动应用程序,执行任何初始化的操作,注册这些都是必要的,然后手动的执行这些功能。我们记录下系统日志通过来自TraintDroid信息:被标记的binder信息,被标记的文件输出,被标记的网络信息以及远程的网络地址。整个实验(在2010年的5月)持续略超过100分钟,生成了22,594个包(8.6MB)并且1,130个TCP链接。为了验证我们的结果,我们同样还记录了网络流量通过使用tcpdunmp在WiFi上的接口并且反复实验在多个Nexus One 手机上,执行相同的版本的TaintDroid建立在Android 2.1上。尽管用于实验的手机有一个有效的SIM卡,但是这个SIM卡被阻止活动了,迫使所有的数据包传输都通过无线的接口。包跟踪只是用于验证通过TaintDroid标记的接触的受污染的数据。
粗了网络连接跟踪,我们还指出是否应用程序获得用户的同意(显示或者隐式)出口的敏感信息。这个通过额外的上下文信息来识别可能的隐私违规行为。例如,通过选择“使用我的地理位置”在天气应用程序中,用户是默认同意披露地理坐标给天气服务器的。
表2应用程序组要求的权限(L:laocation,C:camera,A:audio,P:phone state).Android Market 市场类别显示在括号,显示出了应用程序的多样性。
注意:列出的名字是对应在手机上安装的名字并不是列在Android Market市场上的。所有列出的应用程序都要求可以访问Internet。
6.2 调查结果
表 3总结了我们的发现结果。TaintDroid标记了105个TCP的连接包含隐私敏感数据的污染信息。我们手动标记了每个信息根据可用的上下文,包括远程的服务器名称和时间相关应用程序日志消息。我们使用了远程主机名作为说明数据被发送到服务器提供的应用程序功能或者是第三方来使用。通常情况下,信息包含明文,复制类别,e.g.,一个HTTP GET请求包含地理位置坐标。但是,21个被标记的信息包含了二进制的数据。我们的调查显示出这些信息是由手机的Google地图以及FluryAgent的APIs和包含了污染的隐私敏感数据。这些结论的支撑是通过当APP收到了一个污点包裹通过系统的地理位置管理器之后消息会立即的传播开来。我们现在扩展了我们的研究结果为扩大每个类别并且反应潜在的隐私侵犯。
表3研究的应用程序中有20个存在潜在的隐私侵犯。注意三个应用程序有多个违规行为,其中一个有范围了者三个类别中的。
注意 TaintDroid标记了这一类的9列应用,但只有7个院士传播IMEI没有提及这种实践的EULA。据我们所知,二进制消息包含了受污染的位置数据。
电话信息:表 2展示出了在30个应用程序中的21个申请了读电话状态以及联网的权限。我们发现21个中的2个应用程序传送给他们的服务器(1)手机的电话号码,(2)IMSI号它是一个15位的数据编码用于标示个人用户在GSM网络的功能,(3)ICC-ID数字是一个唯一的SIM卡的序列号。我们验证消息是正确的标记通过检查明文的有效负载。在任何一种情况下都可以告知用户这个信息传播了电话信息。
这个发现展示出了Android的coarsegrained访问控制提供了足够的保护对第三方应用程序试图收集敏感数据。此外,我们发现了一个应用程序在每次手机重启的时候都会传送电话信息。虽然这个应用程序显示出条款是第一次使用,使用条款中并没有指定集合的高度敏感数据。令人惊讶的是,这个应用程序传递手机数据在安装之后,第一次使用之前。
设备唯一ID:设备的IMEI同样被应用程序所暴露。IMEI号用于唯一标识一部手机并且用于阻止被盗手机用于访问移动网络。TaintDroid标记展示出了有9款应用在传播IMEI号。在这9款中的7款要么不呈现最终用户许可协议(EULA)或不指定收集的EULA。其中的7款应用程序是一个流行的社交网络应用程序或者是一些基于地理位置信息服务的应用程序。此外,我们发现7个当中的2个应用程序包含了IMEI当设备传输地理坐标到他们的内容服务器,潜在的利用了IMEI作为客户机的ID。
相比之下,这9个当中的2个应用程序处理IMEI更加的谨慎,因此我们不把他们归纳在属于潜在隐私侵犯这一类。一个应用程序展示出了一个隐私声明表示出了应用程序收集的设备ID。其他的使用hash后的IMEI代替了这个数字本身。我们确认这个事实通过比较来自两个电话不同的结果。
来自广告服务器的位置数据:一半的研究应用程序展示出了暴露位置数据给第三方的广告服务器而没有任何隐式或者是显示的让用户知晓。在这其中的15个应用程序,仅仅只有两个展示出了EULA在第一次运行的时候;并且EULA也展示出了这种做法。展示出的位置信息同样是明文的二进制形式。暴露出的地理位置信息也是明文和二进制的信息。后者强调了TaintDroid的优势,简单的基于模式的包扫描信息。应用程序发送地理位置数据的明文给了admob.com,ad.qwapi.com,ads.mobclix.com(11个应用程序)使用二进制程序到FlurryAgent(4个应用程序)。纯文本的位置暴露在AdMob发生在HTTP Get的字符串:
...&s=a14a4a93f1e4c68&..&t=062A1CB1D476DE85B717D9195A6722A9&d%5Bcoord%5D=47.661227890000006%2C-122.31589477&...
调查在AdMob的SDK展示了s=参数,是一个表示独特应用出版商,并且coord=参数提供了地理位置坐标。
对于FlurryAgent,我们证实了位置信息暴露通过以下的一些事件。首先,一个命名为“FlurryAgent”组件注册了位置管理器来接收位置的更新。然后,TaintDroid打印出信息展示出应用程序接收污点包裹来自地理位置管理器。最后,应用程序报导“发送报告到http://data.flurry.com/aar.do”当接收到污点包裹的时候。
我们的实验表明了15款应用程序收集地理位置数据然后传送给广告商。在这些案列当中,地理数据传输广告服务器即使没有广告展示在应用程序中的。