整个事件大概就是,Meta公司旗下的Instagram和Facebook应用程序的iOS版本被隐私安全专家FelixKrause发现,它们会用程序内的定制化浏览器尝试跟踪用户在其他第三方网页中的交互和输入,无论是简单地浏览网页,还是输入密码、住址等机密信息,不仅有害于用户隐私,还会给用户带来不少的风险。
注意:为简单起见,在下文中我们将使用「Instagram」来指代「Meta」或「Facebook」。
Apple在2021年发布的iOS14.5中上线了一个名叫「App跟踪透明度」的功能,通过该功能用户可以选择性地允许部分应用跨(隶属于其他公司)应用跟踪用户数据。
在这个功能发布以后,Instagram的CEO马克扎克伯格(MarkZuckerberg)报告该公司将在2022年损失100亿美元营收;而市场研究公司Lotame的报告显示:
将在第二年对这些企业产生近160亿美元的影响……大部分影响(81%)仍会是Meta……而按照81%的比例计算,Meta受到的冲击约为128亿美元。
通过网页跟踪用户早在移动互联网盛行之前就已经是一个非常常规的手段了,跟踪用户的方法有很多,但其中最出名的就是通过第三方cookies进行跟踪。随着各大浏览器厂商开始默认阻止第三方cookies,这种跟踪方式已经越来越难跟踪用户了。
关联阅读:
7D902I08D-7846-4CA4-TE6P-83369125YFDC
IDFA就像是一台设备的身份证,用户在应用内的一切操作,都可以将被应用记录下来,并且与IDFA绑定,就形成这台设备的行为数据。在iOS14.5以前,任何的App都可以自由访问IDFA,而这样就会导致一个问题,所有的App都能知道用户的行为数据且了解用户的偏好。从iOS14.5开始App追踪透明度功能正式上线,从这时开始所有的应用程序需要先获得用户的许可,才可以然后才能跨应用追踪用户数据。虽然App追踪透明度功能并不能完全防止一个公司跟踪我们,但是至少还是能减少跟踪面的,所以App追踪透明度功能上线以后Instagram和Apple之间的嘴炮从未停歇过:
编注:以下内容为FelixKrause的个人博客的译文,除了补充必要的解释信息外,仅代表作者FelixKrause本人的观点。
苹果公司的iPhone警告信息每年会让Instagram损失100亿美元。
Facebook抱怨说,苹果公司的App追踪透明度(ATT)利好了那些像谷歌这样的公司,因为这个功能「可以让浏览器从应用跟踪提示中豁免」。
由于反跟踪功能内置于iOS,所以你在iOS上访问的网站不会触发追踪提示。——DaringFireball&MacWorld
Facebook用消息轰炸其用户,乞求他们重新将追踪功能打开。它威胁对苹果提起反垄断诉讼。它让小企业为用户追踪的行为辩护,因为当一家巨大的公司监控着数十亿用户时,小公司也得为自己谋求发展之道。——EFF《Facebook声称苹果过于强大,但他们是对的》
不过,本文的讨论范围仅限在如何实现这种行为以及在技术上什么是可能实现的,暂不在法律层面上讨论这个行为。
我并没有Instagram到底收集了哪些数据的精确列表。我只是有证据证明Instagram和Facebook应用程序在未经用户许可的情况下,主动运行了一个JavaScript指令并额外注入了一个JavaScriptSDK,用于跟踪用户的文本选择。Instagram已经这么做了,他们还完全可以再植入其他的任意JavaScript代码。此外,Instagram应用程序本身可以很好地防止中间人攻击,只有通过修改他们的Android安装包文件来去除证书锁定并且在模拟器中运行才可能进行中间人攻击。
总之本文的目的不在于详细列出他们收集的数据种类,而是去强调当用了app内置浏览器后可能造成的隐私和安全问题,并且去证明Instagram等的app已经在利用这一漏洞了。
而利用这一漏洞,在用户使用类似Instagram等的app内置的浏览器时可能会有如下的风险和问题:
虽然,Instagram的内置浏览器支持自动填写你的住址和付款方式。但,没有任何理由去支撑这个功能以JavaScript注入的形式存在,这个功能目前已经内置于操作系统或者浏览器里了。
大多数app内置浏览器都有办法将网站跳转至Safari打开。一旦你在app中打开了某个网站,只需点击如图所示的「在浏览器中打开」。如果这一按键并不存在,你就需要去将网页URL复制粘贴到你的浏览器中去打开了。
在Instagram解决这个问题之前,如果他们想解决的话,你可以轻松骗过Instagram和Facebook应用程序——只需要让应用程序相信他们的追踪代码已经被安装过了,因此只要在你的HTML代码当中加上这些内容就可以了:
苹果在搭建他们的平台时将用户隐私谨记于心。他们有四条隐私原则,其中之一如下:
用户透明度和控制(UserTransparencyandControl):确保用户知道何种数据会被共享,以及数据会被怎样使用,让用户对其可以进行掌控。
避免使用Web视图来构建网络浏览器。使用Web视图让人们在不离开你的app的情形下短暂的进入另一个网页是可以的,但Safari仍是人们浏览网页的首要选择。尝试在你的app当中复制Safari的功能是不必要且不被鼓励的。
如果你的应用程序允许用户查看其他网站的内容,请使SFSafariViewController控件。如果你的应用程序要自定义、交互或者控制网页内容的显示时,才应该使用WKWebView类。
采用App-BoundDomains
App绑定域(App-BoundDomains)是一项出色的新Webkit特性,使开发者在使用WKWebView控件时能够向用户提供一种更加安全的app内置浏览器上网体验。作为一名app开发者,你可以定义你的应用程序可以访问哪些域,且所有的网络请求都将仅限于这些域。如果要禁用这种保护,用户必须去iOS设置中明确的为该应用程序禁用这项功能。
App绑定域功能大约1年半之前随着iOS14推出,但是它对于开发者来说只是一个可选项,也就是说大部分iOS的应用程序并没有用到这项特性。
如果社交类软件想要他们的用户拥有更好的隐私体验,他们有两条路可走:
在app内置浏览器中使用SafariViewController而不是WKWebView。SafariViewController通过在社交类软件的进程以外的空间加载页面,以此来保护用户的数据免受应用程序的侵害。SocialApp可以因此确保在使用SafariViewController时可以为其用户提供最佳的用户隐私体验。
选择App绑定域。额外增加了App绑定域的WKWebView控件将被限制,以确保社交类软件无法使用上述API跟踪用户。
我强调了「想要用户有更好的隐私体验」这句话,因为这也是现在正缺失的一部分:在发生社交软件植入追踪代码这件事情以后,App绑定域应该成为每一个iOS应用程序必备的一部分。
苹果可以立即采取的一些措施:
除了类似浏览器应用程序以外的少数例外,但这些例外需要额外进行确认: