原文作者: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框架管理应用程序中的分析库。
总体框架如图1所示:
图1
由于app开发者需要调用分析库提供的跟踪API(tracking APIs)来收集应用内操作,因此需要先确定各个分析库(比如中国app最常用的Umeng)所提供的APIs,通过查看分析库的官方文档或者使用Apktool进行反编译以获取API的完整类名。
很多安卓apps都使用到了基于标识符重命名的混淆处理(identifier renaming based obfuscation),如ProGuard,因此通过Obfuscated API Finder可以识别出采用了混淆方法的app中的跟踪API——对于进行了混淆处理的app中所有函数,通过将其[引用字符串(由该函数的指令序列生成)和方法调用图(method call graph)]与跟踪API的进行对比,以确定该API是否是被混淆后的跟踪API。
静态分析旨在发现用户在应用程序源代码中硬编码(hardcoded,比如一些按钮的名称)的应用程序内操作,Alde执行静态反向污染分析(static backward taint analysis),根据应用程序的smali代码找出跟踪API参数的值。
Alde使用AndroidViewClient将app运行五分钟,同时使用Xposed框架将跟踪APIs进行拦截(hook)。当正在运行的app调用了跟踪API时,API参数的值将被Xposed捕获并存储,这样便可以获取用户在app运行时由分析库收集的应用内操作。
从“豌豆荚”和Google Play中下载免费的apps作为数据集。
针对以下8个广泛使用的分析库进行分析,如图2,图中还展示了这些分析库所需的权限和可选权限:
图2
Obfuscated API Finder不能识别出所有的跟踪API,原因有四:
总结如图3,图中展示了未成功识别跟踪API的app数量:
图3
通过Alde框架的分析,人工整理分析结果并将所有apps分为三个级别,对所分析的apps的分级结果如图4所示:
图4
由分析库所引发的隐私泄露问题总结如图5所示:
图5
设计并实现了一个名为“ALManager”的Android应用程序,利用Xposed框架来管理分析库,以解决分析库所带来的隐私泄露问题,让用户能够控制分析库收集的信息,如图6所示。
图6
本文研究了收集用户应用程序内操作信息的分析库所造成的信息泄漏,开发了一个名为“Alde”的工具,对8个流行的分析库和300个从中国应用程序市场和Google Play下载的应用程序进行实验,发现apps在未通知用户的情况下将用户个人信息泄漏到分析库。为了减轻这种隐私风险,本文开发了一个名为“ALManager”的应用程序,利用Xposed框架来管理分析库。
安全学术圈招募队友-ing, 有兴趣加入学术圈的请联系secdr#qq.com