Understanding Malicious Cross-library Data Harvesting on Android

https://www.usenix.org/system/files/sec21-wang-jice.pdf

集成在移动APP中的各种库可能会从宿主APP或后端服务器偷取数据(XLDH),本篇文章就介绍了这种攻击向量。结合SDK服务条款(ToS)的语法分析和跨运行库交互的代码分析,作者研究了1.3百万个来自于40个最流行的SDK Google上的APP,发现有42个不同的库从16个流行SDK中窃取数据,影响了19K个APP,总下载量90亿。本篇文章还阐述了基于库的数据窃取背后的经济体系,独特的策略(将数据隐藏在崩溃报告中并使用C2服务器定期解析数据)和影响。

介绍

大多数APP都需要集成第三方SDK和一些库,一些恶意库就会窃取宿主APP上的第三方库的数据,其中可能包含用户隐私数据

下面则是这些恶意库执行XLDH的工作流程

以窃取Facebook数据为例

  1. 检测是否存在Facebook的SDK

  2. 调用Facebook的API获取用户名和Token,由于在同一个App中,这种调用不会被阻止

Google Play上16%的APP使用Facebook SDK开发,所以数据泄露还是比较严重的

作者研究发现XLDH获取到的数据也被用于像剑桥分析丑闻那样的政治情况获取和提升中

Methodology

为了更好地理解XLDH及其背后的经济系统,XLDH造成的影响,本文提出了XFinder识别集成在APP中的恶意库。

  • 发现SDK中管理的限制数据和SDK中的第三方数据分享策略,策略中描述了数据能否或怎样分享的

  • 自动从厂商发布的ToS中提取策略,并分析每个集成在APP中的库:是否调用了SDK,是否违背了策略

  • 利用针对ToS的独特性的语义分析提取ToS中的数据分享策略,其中使用了NLP方法。

  • Data Policy Analyzer(DPA):以一系列ToS作为输入,解析出SDK的数据分享策略

  • Meta-DB Constructor:根据SDK数据分享策略和SDK的API文档得到敏感API以及对应的API返回值

  • Cross-Library Analyzer(XLA):查看反编译后的代码并且找到所有跨库调用敏感SDK API的地方,然后跟踪对应返回值的数据流识别数据窃取。由此找到窃取数据的地方

结果

可以从可能包含42个恶意库的百万个样本上,实现86%的准确率。

  • 有42个不同的恶意库会从第三方SDK中窃取数据,并且不被用户察觉,这些库被集成在19K个样本中,共90亿次下载,窃取的数据包括Token,照片,朋友列表

  • 以OneAudience库为例

    • 集成在了超过1738个APP中,超过百万用户

    • 从Facebook和Twitter从收集用户隐私数据,和Nielsen分享数据,用于政治市场

  • XLDH经济系统

    • 库分发:多种渠道,包括与免费的应用构建服务勾结,集成到流行库中,提供APP货币。例如按照APP安装数量给集成有问题库的开发者一定的费用
  • VT还无法检测这种恶意行为

贡献

  • 介绍了恶意库窃取第三方SDK数据这种攻击向量:阐述了这种威胁对于隐私的影响,也可以更好地理解背后的经济体系,以及控制这种风险的挑战

  • 通过一种新的方法使自动识别APP中的XLDH:利用对ToS进行语法分析和库之间交互

  • 发布了一个可以在线分析ToS的代码以及数据集