全速加载中...
首页
文章
随笔
留言
友链
关于
工具
更多
湘ICP备2021007748号-4
湘公网安备案湘公网安备43052202000137号
又拍云

"你的iPhone在裸奔":Loupe开源工具揭露iOS设备指纹的灰色地带,苹果七年隐私工程被撕开一道裂缝

你的iPhone可能远比你想象的"透明"

2026年6月21日,一款名为Loupe的开源iOS应用登上了Hacker News热榜,在短短35分钟内从190分飙升至200分+。它不做任何花哨的事情,只是打开你的iPhone,读取一些"公开数据",然后展示给你看——那些任何第三方应用都能轻松获取的、关于你的设备信息。

结果令人不安。

你关闭了App Tracking Transparency、拒绝所有追踪请求、甚至用了iCloud Private Relay——但一个简单的App仍然能知道你手机的"出生时间"(音量创建时间戳)、你在什么时候复制了什么东西(剪贴板变化计数)、你装了什么应用(通过URL Scheme探测)、你用的语言、你的时区、屏幕分辨率、电池状态……这些信息单独看可能无伤大雅,但组合在一起,就是一个稳定、持久、跨应用可追踪的"设备指纹"。

这既不是漏洞,也不是黑客技术。这是iOS的设计。


发生了什么:Loupe到底是什么?

Loupe由知名隐私研究团队Mysk(Tommy Mysk和Talal Haj Bakry)开发,于2026年6月5日发布在App Store上,6月12日更新到1.0.1版本。它是一个免费、开源(MIT协议)的iOS/iPadOS应用,大小仅8.88MB,最低支持iOS 17.0。

Mysk团队不是无名之辈。他们就是2020年揭露TikTok偷偷读取剪贴板的那两个人,也是2019年发现AirDrop联系人泄露漏洞的研究者,更是2024年发布"Required Reason API合规性审计"——发现Google Chrome、Instagram、Spotify、Threads等大厂App仍在偷偷进行设备指纹——的安全团队。

Loupe的核心理念出奇简单:它读取和任何第三方App完全一样的公开iOS API,然后把原始值展示给你看。 它不做任何上传、不聚合、不哈希、不共享。它在GitHub上的README里说得很明确:"Nothing Loupe reads leaves your device unless you explicitly export it."

但正是这份"诚实"让整个行业感到不安。

Loupe GitHub 仓库 | Loupe App Store 下载


核心机制:iOS设备指纹的三层信号

Loupe将设备指纹信号分为三个层级,每个层级代表不同的"获取成本"——即App需要付出多少努力才能拿到这些信息。

第一层:被动信号(Passive)——零成本,零权限

这是Loupe揭示的最具冲击力的部分。被动信号是任何已安装的App无需触发任何权限弹窗、无需用户任何形式的同意,就能直接读取的信息。包括但不限于:

  • 语言与区域设置(locale)
  • 时区
  • 屏幕尺寸与缩放比例
  • 电池状态(充电中/已放电百分比)
  • 系统运行时间(uptime,设备距离上次重启已经过了多久)
  • 音频路由状态
  • 音量创建时间戳(Volume Creation Date):记录设备"用户卷"何时被创建,精确到秒——也就是设备上次被设置或抹除的时间
  • 剪贴板变化计数(Pasteboard changeCount):一个单调递增的计数器,每次系统剪贴板被写入就+1

没有任何一个信号本身是唯一的。但结合语言、时区、屏幕尺寸、音量创建时间戳——这个组合在任意合理的用户群体中足以把设备缩小到一个极小的候选池。

第二层:需权限信号(Needs Permission)——有代价的指纹

这层是用户熟悉的iOS权限弹窗系统:通讯录、照片、位置、日历、麦克风、摄像头、运动与健身、本地网络。App第一次请求这些权限时会弹出系统对话框。

但这里的指纹价值不在于数据本身,而在于:用户是否点击了"允许",以及点击的时间戳。一个在凌晨3点允许访问通讯录的用户和一个在下午3点拒绝的用户,背后是两个完全不同的人设画像。

第三层:高级信号(Advanced)——聪明的侧信道

这是技术含量最高、也最让Hacker News评论区感到"离谱"的部分:

  • canOpenURL探测:iOS允许App检查某个URL Scheme是否能被打开。这意味着App可以枚举数百个已知应用的URL Scheme(如whatsa//、tg://、instagram://等),通过判断哪些返回"可以打开",就能精确推断出用户安装了哪些应用——完全不需要任何权限。

  • Keychain跨重装持久化:iOS Keychain中的数据在App被删除后仍会保留。当用户重新安装同一个App时(或由同一开发者签名的不同App),Keychain中的旧数据可以被恢复。这意味着即使清空所有Cookie、重置广告标识符,一个App仍然能认出"你回来了"。


"烟雾弹"时刻:为何Volume Creation Date和Pasteboard changeCount引爆了HN

Loupe在HN上迅速突破200分,很大程度上归功于两个具体的数据点。

HN用户RedComet评论道:

"Volume creation date实在太过分了。我想不出任何理由让它和Pasteboard changeCount保持如此高的精度。"[来源]

另一位用户regecks补充:

""iPhone上次设置或抹除于……"这真的太恶心了。用户对此能做什么呢?我觉得系统应该用某种方式模糊化处理。"[来源]

Volume Creation Date为什么如此敏感?因为这个时间戳精确记录了你"重置/设置"手机的日期和时间。结合时区设置,一个广告平台就能推断出:这台设备是"新面孔"还是"老用户",甚至能推测用户的消费周期——比如一个每年新款iPhone发布后立即换机的人,其音量创建时间戳会呈现明显的年度模式。

Pasteboard changeCount的敏感之处则在于"时间模式泄露"。剪贴板计数器本身不暴露内容,但它暴露了"复制行为的时间模式"——你在什么时间点复制了什么。商务人士在工作时间大量复制链接和文档,普通用户在晚上复制表情包和段子,两个模式的差异本身就是高价值的用户画像信号。


苹果的"纸墙":Required Reason API为何失效

2023年WWDC上,苹果宣布了Required Reason API——一项要求开发者在应用隐私清单中声明他们为何调用某些特定API的机制,于2024年5月1日正式强制实施。苹果当时的宣传口径是:这将彻底终结设备指纹。

实际效果如何?

2024年5月,Mysk发布了一项研究:他们对Google Chrome、Instagram、Spotify、Threads等热门App进行了网络流量分析,发现这些App在Required Reason API执行后,仍然在调用清单上的API并将结果发送到外部服务器——却没有在隐私清单中声明合理理由。[来源]

但Loupe揭示了一个更深层的问题:Required Reason API覆盖的范围太窄了。

Loupe的"被动层"信号——音量创建时间、剪贴板计数器、系统运行时间、语言、时区、屏幕信息——没有一个被列入Required Reason API清单。因为它们不被苹果认为是"可能被用于指纹识别的API"。

这就是Loupe存在的意义:它不是揭示了"漏洞",而是揭示了苹果对"隐私"的定义存在系统性盲点。


正反视角:Loupe的价值与局限

为什么Loupe重要

  1. 打破信息不对称:普通iPhone用户第一次直观地看到自己的设备暴露了哪些数据。苹果的"App隐私报告"只显示有权限门的类别,被动层完全不可见。Loupe和苹果的隐私报告加在一起,才是一幅完整的画面。

  2. 将学术问题带入主流对话:设备指纹在安全学术界已经讨论多年,但Loupe是第一个能让普通用户亲身体验"被指纹化"的工具。

  3. 审计价值:开发者可以用Loupe验证自己的App是否无意识地暴露了过多信息,隐私研究员可以用它做合规检查。

Loupe的局限

  1. 它只展示问题,不解决问题:Loupe本身不阻止任何追踪。它像一面镜子——让你看到自己"赤裸"的样子,但不给你衣服穿。

  2. "AI生成"的代码质量:Loupe的README坦诚地写着"Loupe was written almost entirely by AI coding tools"。对于一个展示敏感系统信息的工具而言,AI生成的代码可靠性本身就是一个值得讨论的话题。Mysk团队没有披露他们在AI生成后做了多少人工审计。

  3. 用户无力感:普通用户看完Loupe的数据后,除了"哦"一声和删除几个App,实际上做不了太多。根本问题出在iOS的系统设计层面,单个用户无力改变。


现实映射:广告技术帝国的"合规定义"游戏

把Loupe的发现放到更大的产业背景中看,事情就更加清晰了。

2021年,苹果推出App Tracking Transparency(ATT),默认关闭IDFA(广告标识符),迫使App弹窗请求追踪权限。全球广告行业一度哀嚎,认为iOS的广告生态将崩溃。

但结果呢?广告行业没有崩溃,它只是转向了设备指纹。

今天,当你拒绝了一个App的追踪请求时,它只是拿不到你的IDFA了。但它仍然能读取你的语言、时区、屏幕信息、音量创建时间戳,然后通过canOpenURL知道你装了哪些应用——所有这些信息加起来,足以在广告交易平台上稳定地识别你。

Loupe的HN用户microtonal一针见血地指出了这一点:

iOS设置中的"允许App请求追踪"开关,仅仅屏蔽了广告标识符。它并没有屏蔽URL Scheme探测、音量创建时间戳、剪贴板计数器或任何其他高级信号。一个用户打开所有iOS提供的隐私开关,仍然可以被跨应用指纹识别。[来源]

这不是漏洞。这是合规的指纹识别。广告技术公司不是在"绕过"苹果的限制,而是在苹果划定的规则内玩一个"定义游戏"——你关掉了IDFA,好,我用别的方法。


我的评价与批判性思考

1. 苹果的"隐私叙事"正在经历一次信任侵蚀

Loupe揭示的核心悖论是:苹果一方面在营销中把自己塑造成隐私守护者,另一方面其系统API的设计为指纹识别留下了广阔的灰色地带。

这不是一次安全事故,不是一次CVE修补就能解决的事。这是一个系统设计层面的根本矛盾——iOS需要为开发者提供丰富的设备信息API来构建功能,但这些API天然可以被滥用于追踪。

苹果面临的选择很艰难:要么进一步收紧API(这将影响正常App的功能开发),要么维持现状(让隐私叙事继续被Loupe这类工具"打脸")。

2. "知情同意"范式的根本局限

Loupe暴露了一个更深层的哲学问题:在"知情同意"范式下,你同意的层级是有边界的。传统隐私控制模型认为:"用户同意"= "触发弹窗时点了允许"。

但Loupe的被动层信号完全绕过了这个模型——因为你根本没机会"不同意"。这些信息在你安装任何App之前就已经暴露了。

这是整个互联网隐私框架的结构性缺陷,不只是苹果的问题。但苹果作为"隐私营销"最积极的公司,理应最先面对这个问题。

3. 实用建议:苹果应该做什么

Loupe给了我们一个清晰的行动清单:

  • 将被动层关键信号纳入Required Reason API:音量创建时间戳、剪贴板变化计数器、系统运行时间等应该被重新分类为"可能被滥用于指纹识别"的API,要求App声明合理理由
  • 限制canOpenURL的返回值:iOS 9已经做了部分限制,但Apple可以更进一步——对所有未注册的URL Scheme返回统一结果,使App无法枚举安装列表
  • 模糊化时间精度:音量创建时间戳不需要精确到秒,按天甚至按周精确度已经足够满足合法使用场景

4. 最终的思考

Loupe最大的价值不在于它能做什么,而在于它重新定义了什么叫做"隐私"。

在Loupe出现之前,"我的iPhone很隐私"是一个感觉。在Loupe之后,它是一个可以验证的、有数据支撑的判断。

最好的隐私保护不是关闭所有权限开关,而是知道自己暴露了什么,并据此做出选择。从这个意义上说,Loupe是这个时代最稀缺的东西——一个让人看清真相的工具。而真相往往是令人不适的。

你的iPhone没有在裸奔。它只是穿着一件透明的衣服,而Loupe是那面让你看清自己的镜子。


参考链接

  1. Loupe GitHub 仓库
  2. Loupe App Store 页面
  3. State of Surveillance: Loupe深入分析
  4. CyberInsider: New open-source app Loupe reveals how iPhones are fingerprinted
  5. iOS 隐私漏洞引关注:无需授权即可读取设备指纹
  6. Mysk Blog – 安全与隐私研究
  7. Hacker News: Loupe讨论帖
  8. Apple Developer: Required Reason API 文档
【版权声明】
✨ 本文来自 [张苹果博客] ✨
🌿 你可以:自由转发到社交网络或个人网站。
🌿 你需要:标注作者并附上本文链接(就像给文章留个回家地址~)。

上一篇 下一篇

评论一下

评论列表

 
等待第一条评论中…
用户头像
小苹果
发布日期:2026年06月22日