很少见到Google亲自下场参与安全研究论文,这种情况多半发生在和Android生态(特别是和Google要管理的Play市场)相关的时候。今天我们介绍的这篇(已经被CCS 2025录用的)论文 Fingerprinting SDKs for Mobile Apps and Where to Find Them: Understanding the Market for Device Fingerprinting 就对当前Android生态环境中移动应用的设备指纹采集(device fingerprinting)行为进行了大规模分析:
Google这种企业搞安全研究,肯定不会跟我们苦哈哈的安全研究人员一样,而是走向人工智能那种简单粗暴的风格。今天这篇论文介绍的就是他们针对228000个第三方SDK和178000个Android APP的分析(论文骄傲地宣称这是已知最大规模的分析),一看就不可能逐个精细化分析。所以,作者首先要定义到底什么算是所谓的设备指纹采集行为,这里作者引入了一个概念——signal,也就是Android设备中某种特定的数据采集点(比如手机的型号就能算作一种signal,某个系统API能够返回具有区分度的特征值也算),而实际上到底什么数据采集点能算signal,这个其实是非常模糊的,大量的论文提出了不同类型的signal,那本文的作者应该怎么去统计哪些signal是需要关心的呢?
在研究过程中,作者先是去调查了各类广告类SDK(advertising SDK),选择了那些主动承认自己要对设备进行指纹采集的SDK(作者管这种SDK叫做self-identifying fingerprinting SDK),对其进行了逆向分析(让两位逆向分析师分别去逆向,避免互相干扰 Google真有钱!),然后提取出设备指纹采集所涉及的signal:通过逆向分析14个不同的广告SDK,最后作者一共确定了500多种不同的signal(见下表),其中最卷的一个SDK(Accertify)用了213种不同的signal,而最不卷的卡巴斯基SDK(人家本职工作是杀毒)也用了20种signal,看起来这个领域竞争激烈啊!
更重要的是,如果比较一下不同的self-identifying fingerprinting SDK之间所采集的signal的余弦相似度(下图),你会发现各家SDK的技术路线都差得蛮远的,这说明这个领域还是比较玄学的,没有真正进入到成熟的程度:真正高度科学竞争且发展成熟的领域,技术路线最后都会趋同。这种signal多样性同样体现在不同SDK使用系统API的情况上:只有两个特定的系统API是超过75%的SDK都会去调用的,而在所有被用来当作signal进行采集的API中,有超过80%的API到底算不算signal,至少有一半的SDK没法达成共识,是不是更加玄学了?
接下来,作者利用初始的SDK集合(也就是self-identifying fingerprinting SDK)作为参考,对更多的SDK(不管你有没有承认自己进行了设备指纹采集)进行了分析,这里的分析技术路线堪称模板,来学习一下:
We built a static-analysis suite for Android APK and SDK analysis, and deployed an interprocedural, context-, field-, object-sensitive taint-flow tracking algorithm for fingerprinting detection
有没有被这个 interprocedural, context-, field-, object-sensitive taint-flow tracking algorithm 震惊到,关键是,作者还很自信地说了一句“We claim no novelty for this analysis”,并指出这个技术细节我们都不高兴在正文里面放了,大家去附录(Appendix B)里面看吧。总之就是把基本的静态分析技术全部用上了,做了一遍分析之后,只要发现某个SDK收集的signal数量比self-identifying fingerprinting SDK里面收集得最少的那个还多,就认为这个SDK也是在做device fingerprinting,就是用这种比较粗线条的思路,作者又发现了723个不同的SDK家族(这里面如果考虑不同版本,总共涉及到 14178个不同的SDK)也可以认为是在执行设备指纹采集的任务!
在Google内部开展的安全研究工作可能还有一些和在学术机构不太一样,作者也会做一些为数据分析服务的事情,比如会想办法给不同的SDK进行分类(SDK和APP不一样,不需要上传上架,因此没有什么分类的说法),把它们分成广告类、数据分析类、安全认证类、工具类和其他类(下表):
对SDK进行分类可能和安全没太多关系,当然对后面进行数据统计会有帮助,让事实变得清晰一些,例如大家可能会关心这723族SDK大概都是什么主要的功能:
这些统计分析调查在个体上不一定能体现出来什么安全风险,但是在大尺度上,你一定会觉得事实非常的触目惊心:由于作者掌握了Google Play上从2023年1月到2024年5月发布过的3025417个APK文件(太过分了),他们可以调查整个市场上全体APP包含设备指纹采集SDK的全貌!当然,作者偷了懒,限制了分析的范围,仅对那些在2024年4月13日到5月13日期间的audience-size(这里有点奇怪,到底是有多少用户下载过,还是有多少用户使用过,没有说清楚)超过10000的APP进行分析,这样分析的数量就下降到了178054个(依然很多)。
论文中使用了下图来说明在所有分析的接近18万个APP中,存在设备指纹采集行为的APP的比例和分布情况,如果光看下图可能很难发现问题,作者帮我们总结:尽管在每个不同类别中,存在设备指纹采集行为的APP占整体的比例都很小(5%),但是这些存在设备指纹采集行为的APP的用户量基本上都是那些没有设备指纹采集行为的APP的10倍以上。也就是说,越是热门的APP,设备指纹采集行为就越不可缺少!而且,由于这些热门APP很可能背地里互通有无,实际上用户和设备被监控和定位的可能性就更大更准确了……
实际上,如果你等到CCS开会的时候再读这篇论文,就会错过真正的宝藏!作者在arXiv上放出的加长版才是真正的一刀未剪的完整版,附录中包含了完整的如下信息,这其中最宝藏的莫过于附录B中作者使用的静态分析技术(虽然他们傲娇地宣称这个很trivial)以及附录D中包含的所有(可能是通过昂贵的Google工程师的逆向工时堆积出来的)和signal相关的API信息!!!强烈推荐!!!
论文(完整版):https://arxiv.org/pdf/2506.22639
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2025-07-08 Google视角下的Android设备指纹采集风险
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论