你是否遇到过这样的情况:前一天在某个社交平台搜索了某款鞋,第二天却在毫不相干的购物应用中看到了它的推荐?这种经历常常让人感到不安,并开始猜测是否是应用之间共享了用户数据,或是手机的麦克风在“偷听”。虽然这些猜测听起来有些夸张,尤其是在麦克风监听方面很容易被发现,但考虑到当前互联网公司的一些做法,也不能完全排除。
然而,广告商们其实拥有更隐蔽且安全的方式,将你搜索过的商品精准推送给你,这仅仅是基于对你手机的识别。例如,当一台手机在应用 A 中搜索过某商品后,应用 A 会记录下这台设备的偏好。当这台手机切换到应用 B 时,应用 B 能够识别出同一台设备,并继续推送相关的商品信息,而无需知道用户的具体身份。
那么,广告商是如何收集这些信息的,又如何实现跨应用传播呢?最近,安全团队 Mysk 开发了一款名为 Loupe 的应用,旨在帮助用户了解手机应用能够获取多少数据,以及每授予一个权限会带来哪些潜在的暴露。
Loupe 在不授予任何权限的情况下,就能展示出手机的一些基本信息,例如设置的地区(新加坡)、键盘输入方式(中英文混合)、设备激活日期(2023年9月),以及复制粘贴的次数(29034次)和上次开机时间(8天3小时44分钟前)。此外,它还能根据已安装的应用(如 Steam、Discord、GitHub、Slack)推测出用户的兴趣和职业领域。
进一步查看 Loupe 的详细报告,可以发现更多信息,如 iPhone 15 Pro 的剩余存储空间(105GB)、深色模式的开启状态、屏幕亮度(约一半)、电量(60%)、是否连接充电器、双卡状态(均为5G),甚至手机当前的倾斜角度和朝向。
尽管这些零散的信息本身不足以精确定位用户,但它们组合起来,就构成了设备的独特“指纹”,足以让广告商在众多设备中识别出你的手机。而这仅仅是基于公开 API 获取的信息。
如果像其他应用那样,授予 Loupe 访问相册的权限,它就能获取更多信息。例如,Loupe 可以统计图库中的视频和图片数量,并识别出包含地理位置信息的照片,甚至能分析出常去地点的频率。尽管 Loupe 显示的地点可能不够精确,但照片中的 EXIF 信息包含精确的经纬度,通过分析出现地点和时间,可以大致推断出用户的居住地、工作地点,以及可能的家乡。这或许解释了为何一些应用在未获得定位权限的情况下,仍能推送周边活动信息。
为了避免这种情况,建议用户在iOS设备上使用系统图片选择器,只授权选择特定照片,这样可以避免将照片的定位信息发送给应用。同时,对于那些以“方便”为由请求开启全部权限的弹窗,应选择“保持现状”。
当 Loupe 被授予本地网络权限时,它能够发现局域网内的其他设备,如打印机和 NAS。虽然看到周围设备是该权限的正常功能,但很多应用在未明确需要时就主动索要此权限,令人费解。
包括位置、蓝牙、日历等其他权限,每授予一个,应用对用户的了解就越深入,设备指纹也就越清晰。
那么,应用 A 中收集到的设备指纹和用户偏好信息,是如何被应用 B 得知的呢?这通常是通过广告 SDK 实现的。许多应用并未自行开发广告系统,而是接入第三方广告 SDK。这些 SDK 在向广告平台请求广告内容时,会将手机的特征信息一同上传。这样,你在应用 A 中留下的偏好信息,就能通过广告平台被其他应用(如 B、C、D)获知。
原本,SDK 识别设备有更直接的方式,如苹果的 IDFV(同一开发者公司下的应用共享同一标识符)和 IDFA(跨应用识别)。然而,随着苹果推出“App跟踪透明度”(ATT)政策,用户获得了控制 IDFA 使用的权力,使得广告商难以再依赖此方式进行跨应用追踪。
因此,广告商转而依赖构建设备指纹的策略。Mysk 团队曾发现,包括 Facebook、Instagram、Chrome 等应用,即使在苹果隐私清单中声明不外传某些信息,却仍然将手机的开机时间等信息发送出去,这很可能就是为了拼凑设备指纹。
在安卓平台,类似的情况也存在。研究发现,大量安卓应用和 SDK 包含收集设备指纹的功能,尤其是在交友和漫画类应用中,这一比例更高。
Loupe 应用目前完全免费且开源,iPhone 用户可以尝试下载使用(安卓版本可能稍后推出)。它最大的价值在于帮助用户了解自身数据暴露情况和暴露途径,从而提高安全意识。除了设备指纹,广告商还有其他多种方式来分析用户偏好,例如相似人群分析、账号打通和协同过滤等。

