Android生态系统中分析库的隐私风险分析和缓解

原文作者:Xing Liu, Jiqiang Liu, Sencun Zhu, Wei Wang Xiangliang Zhang

原文标题:Privacy Risk Analysis and Mitigation of Analytics Libraries in the Android Ecosystem

原文链接:https://ieeexplore.ieee.org/document/8660581

原文来源:IEEE Transactions on Mobile Computing ( Volume: 19, Issue: 5, May 1 2020)

笔记作者:CJRTnT@SecQuan

文章小编:cherry@SecQuan

介绍

与安卓应用中广泛使用的广告库(ad library)不同,分析库(analytics library)的主要功能是收集用户的应用内操作(比如对于应用开发者,他们通过收集用户的应用内操作来了解哪些功能更加吸引用户),相比于广告库,分析库更有可能泄露用户的隐私信息。

本文提出了一个框架:Alde,和一个应用程序:ALManager,Alde框架使用动态分析和静态分析来检测由分析库收集的用户应用内操作,ALManager利用Xposed框架管理应用程序中的分析库。

提出的方法

Alde框架

总体框架如图1所示:

Android生态系统中分析库的隐私风险分析和缓解

图1

1.Documentation Analysis

由于app开发者需要调用分析库提供的跟踪API(tracking APIs)来收集应用内操作,因此需要先确定各个分析库(比如中国app最常用的Umeng)所提供的APIs,通过查看分析库的官方文档或者使用Apktool进行反编译以获取API的完整类名。

2.Obfuscated API Finder

很多安卓apps都使用到了基于标识符重命名的混淆处理(identifier renaming based obfuscation),如ProGuard,因此通过Obfuscated API Finder可以识别出采用了混淆方法的app中的跟踪API——对于进行了混淆处理的app中所有函数,通过将其[引用字符串(由该函数的指令序列生成)和方法调用图(method call graph)]与跟踪API的进行对比,以确定该API是否是被混淆后的跟踪API。

3.Static Analysis

静态分析旨在发现用户在应用程序源代码中硬编码(hardcoded,比如一些按钮的名称)的应用程序内操作,Alde执行静态反向污染分析(static backward taint analysis),根据应用程序的smali代码找出跟踪API参数的值。

4.Dynamic Analysis

Alde使用AndroidViewClient将app运行五分钟,同时使用Xposed框架将跟踪APIs进行拦截(hook)。当正在运行的app调用了跟踪API时,API参数的值将被Xposed捕获并存储,这样便可以获取用户在app运行时由分析库收集的应用内操作。

数据集

从“豌豆荚”和Google Play中下载免费的apps作为数据集。

针对以下8个广泛使用的分析库进行分析,如图2,图中还展示了这些分析库所需的权限和可选权限:

Android生态系统中分析库的隐私风险分析和缓解

图2

实验结果

实验一

Obfuscated API Finder不能识别出所有的跟踪API,原因有四:

  1. 在同一分析库的不同版本中,同一跟踪API可能具有不同的方法调用图,而在分析时并没有覆盖所有版本的跟踪API

  2. 虽然有些应用程序使用分析库,但它们不使用所关心的跟踪API

  3. 有几个apps通过Java反射来调用跟踪API

  4. 某些apps通过打包而受到保护,因此无法通过Apktool进行反编译

总结如图3,图中展示了未成功识别跟踪API的app数量:

Android生态系统中分析库的隐私风险分析和缓解

图3

实验二

通过Alde框架的分析,人工整理分析结果并将所有apps分为三个级别,对所分析的apps的分级结果如图4所示:

  1. App level:仅使用分析库收集反映整个app运行状态信息的应用程序,比如用户访问的活动。

  2. Activity level:使用分析库收集每个app activity的运行状态的应用程序,比如用户按下了哪个按钮

  3. User level:使用分析库收集用户生成的数据的应用程序,比如用户在音乐软件中花在某首歌上的时间有多长

Android生态系统中分析库的隐私风险分析和缓解

图4

实验三

  1. 问:分析库是否将用户的个人信息泄露给应用程序开发人员?答:是,因为分析库没有检查开发人员收集的信息,而只是进行了一些统计分析,并将分析结果提交给开发人员

  2. 问:分析库是否将用户的个人信息泄露给分析公司?答:是,因为分析公司拥有收集信息的原始数据,因此隐私泄露的问题还更加严重

由分析库所引发的隐私泄露问题总结如图5所示:

Android生态系统中分析库的隐私风险分析和缓解

图5

  1. 问:如果分析公司将从不同应用程序收集的信息链接起来,那么他们对用户了解多少?答:比如分析公司可以将设备标识符与用户的应用内操作一起收集,这样会导致泄露问题更加严重,比如可以描述和分析用户等

  2. 问:用户是否知道他们的应用内操作是由第三方分析公司收集的?答:对分析库的隐私政策进行分析后,发现一些分析公司列出了他们将收集的信息,并要求开发人员在其app隐私政策中显示分析库的使用情况以及分析库收集的信息。然而,在阅读了这些apps的隐私政策后,发现只有少数apps遵循这一规则。因此推断,大多数用户不知道他们的应用内操作是由第三方分析库收集的。

实验四

设计并实现了一个名为“ALManager”的Android应用程序,利用Xposed框架来管理分析库,以解决分析库所带来的隐私泄露问题,让用户能够控制分析库收集的信息,如图6所示。

  1. 允许用户检查分析库收集的信息

  2. 允许用户指定可以通过分析库收集数据的应用程序,并阻止其他应用程序中的分析库

Android生态系统中分析库的隐私风险分析和缓解

图6

总结

本文研究了收集用户应用程序内操作信息的分析库所造成的信息泄漏,开发了一个名为“Alde”的工具,对8个流行的分析库和300个从中国应用程序市场和Google Play下载的应用程序进行实验,发现apps在未通知用户的情况下将用户个人信息泄漏到分析库。为了减轻这种隐私风险,本文开发了一个名为“ALManager”的应用程序,利用Xposed框架来管理分析库。

声明:本文来自安全学术圈,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。

本文转为转载文章,本文观点不代表威客安全立场。