Meta与Yandex滥用网络协议追踪用户,谷歌展开调查

研究人员发现,Meta和俄罗斯的Yandex在数百万个网站中嵌入的跟踪代码正在通过滥用合法的互联网协议对访客进行去匿名化,这一行为导致Chrome和其他浏览器在不知情的情况下将唯一标识符发送到设备上安装的本地应用中。

谷歌表示正在对此滥用行为进行调查,该行为使得Meta和Yandex能够将临时的网页标识符转换为持久的移动应用用户身份。

这种隐秘的追踪——由Meta Pixel和Yandex Metrica跟踪器实现——让Meta和Yandex绕过Android操作系统和其浏览器提供的核心安全和隐私保护。

例如,Android的沙盒机制旨在隔离进程,以防止它们与操作系统及其他已安装应用进行交互,从而切断对敏感数据或特权系统资源的访问。

与此同时,所有主要浏览器内置的状态分区和存储分区等防御措施,确保与网站相关的站点cookie和其他数据储存在每个顶级域名的独特容器中,确保这些数据对其他网站是不可访问的。

研究者Narseo Vallina-Rodriguez在一次采访中指出:“网络和移动系统中存在的一个基本安全原则就是沙盒机制。”

“所有运行的内容都在沙盒中进行,没有不同元素之间的交互,而这一攻击向量则允许打破移动上下文和网络上下文之间的沙盒。”

这种绕过技术自2017年Yandex首次实施以来,Meta在去年9月也开始跟进,允许这两家公司将来自Firefox和基于Chromium的浏览器的cookie或其他标识符传递到Facebook、Instagram和多个Yandex应用的本地Android应用中。

随后,这些公司能够将庞大的浏览历史与登录应用的账户持有者关联起来。

目前,研究者表示,这种滥用行为仅在Android上观察到,证据表明Meta Pixel和Yandex Metrica主要针对Android用户。尽管技术上可以针对iOS,但研究者指出,该平台上的浏览器允许开发人员在本地端口上以编程方式建立localhost连接,应用可以在本地端口上监控。

然而,与iOS不同,Android对本地通信和移动应用的后台执行实施了更少的控制措施,研究人员表示,同时也在应用商店审核过程中实施了更严格的控制以限制此类滥用。

这种过于宽松的设计允许Meta Pixel和Yandex Metrica将带有网页跟踪标识符的网络请求发送到持续监控Facebook、Instagram和Yandex应用的特定本地端口。

这些应用程序能够在私人浏览模式下将伪匿名的网络身份与实际用户身份关联,实际上对用户在包含这些跟踪器的网站上的浏览习惯进行去匿名化。

Meta Pixel和Yandex Metrica是旨在帮助广告商评估其广告活动有效性的分析脚本。

据估计,Meta Pixel已经安装在580万个网站上,而Yandex Metrica则安装在300万个网站上。

Meta和Yandex通过滥用现代移动浏览器内置的基本功能实现了绕过,这种功能允许浏览器与本地应用之间的通信。

浏览器能够向本地Android端口发送网络请求,以建立各种服务,包括通过RTC协议的媒体连接、文件共享以及开发者调试。

虽然技术基础各有不同,Meta Pixel和Yandex Metrica都在进行一种“奇怪的协议滥用”,利用Android为localhost提供的无检验访问权限。

浏览器在没有用户通知的情况下访问这些端口,Facebook、Instagram和Yandex本地应用静默监听这些端口,实时复制标识符并将其与当前登录的用户关联。

谷歌的代表表示,这种行为违反了其Play商店的服务条款和Android用户的隐私预期。

“这篇报告中的开发者正在以明显违反我们的安全和隐私原则的方式使用许多浏览器中存在的能力。”

代表表示:“我们已经实施了改变以减轻这些侵入技术,并与相关方直接联系开展了调查。”

Meta没有回应本报道的电子邮件询问,但在一份声明中表示:“我们正在与谷歌讨论可能的误解,涉及其政策的适用。”

“在意识到这些问题后,我们决定暂停这一功能,期间与谷歌合作解决问题。”

Yandex代表未对电子邮件请求作出回应。

Meta Pixel开发者自去年9月开始滥用各种协议,实施隐秘监听。

他们最初导致应用向12387端口发送HTTP请求。

然后一个月后,Meta Pixel停止发送这些数据,尽管Facebook和Instagram应用继续监控该端口。

到11月,Meta Pixel转向新方法,通过WebSocket,在12387端口上进行双向通信的协议。

同月,Meta Pixel还部署了一种新方法,利用WebRTC(实时对等通信协议,通常用于在浏览器中进行音频或视频通话)。

该方法采用了一种复杂的过程,称为SDP混淆,即在数据发送之前通过JavaScript代码修改会话描述协议数据。这一方法至今仍在使用中。Meta Pixel通过对连接信息字段插入关键的_fbp cookie内容,使浏览器将这些数据作为STUN请求的一部分发送到Android本地,Facebook或Instagram应用可以读取这些数据并将其与用户关联。

在5月,Chrome的beta版本引入了一项减轻措施,阻止了Meta Pixel所用的SDP混淆类型。

数天后,Meta Pixel通过添加一种新方法,交换STUN请求与TURN请求来避开了这项减轻措施。

研究人员提供了一份详细的描述,展示了如何通过网站访问用户的本地应用并将数据传送到Meta服务器:

1. 用户打开本地Facebook或Instagram应用,最终被发送到后台并创建一个后台服务来监听TCP端口(12387或12388)和UDP端口(12580–12585中的第一个未占用端口)。用户必须使用他们的凭据登录这些应用。

2. 用户打开浏览器并访问嵌入Meta Pixel的网站。

3. 在此阶段,一些网站在嵌入Meta Pixel之前会等待用户的同意。在我们对排名前10万的网站首页进行的测量中,我们发现要求用户同意的网站不足50%,超过75%的受影响网站并未要求用户同意。

4. Meta Pixel脚本加载,本地Instagram或Facebook应用通过WebRTC(STUN)SDP混淆发送_fbp cookie到本地应用。

5. Meta Pixel脚本同时将_fbp值及其他参数(如页面URL(dl)、网站和浏览器元数据以及事件类型(ev),如页面视图、添加购物车、捐款、购买等)发送到https://www.facebook.com/tr。

6. Facebook或Instagram应用从浏览器中运行的Meta JavaScript接收_fbp cookie,并将其传输到GraphQL端点(https://graph[.]facebook[.]com/graphql),以及其他持久的用户标识符,从而将用户的fbp ID(网站访问)与其Facebook或Instagram账户关联起来。

Yandex Metrica首次将Android浏览器中访问的网站与应用身份结合的案例是在2017年5月,当时该跟踪器开始向本地端口29009和30102发送HTTP请求。

2018年5月,Yandex Metrica也开始通过HTTPS将数据发送到29010和30103端口。这两种方法截至出版时仍然存在。

一些Android浏览器已阻止跟踪器中的滥用JavaScript。

例如,DuckDuckGo已经阻止了与这些跟踪器相关的域名和IP地址,防止浏览器向Meta发送任何标识符。该浏览器还阻止了与Yandex Metrica相关的大多数域名。

在研究人员通知DuckDuckGo未完成的黑名单之后,开发者添加了缺少的地址。

与此同时,Brave浏览器通过其广泛的阻止名单和现有减轻请求本地端口访问的措施,也阻止了标识符的分享。

而Vivaldi,另一种基于Chromium的浏览器,在默认隐私设置下会将标识符转发到本地Android端口。

研究人员表示,修改设置为阻止跟踪器似乎可以阻止浏览历史的泄露。

尽管DuckDuckGo、Brave、Vivaldi和Chrome所采取的各项补救措施如预期般奏效,但研究人员警告称,任何时候它们可能会失效。

“任何进行阻止名单管理的浏览器都可能进入一场永无止境的军备竞赛,这只是部分解决方案。”

Vallina Rodriguez表示,“创建有效的阻止名单非常困难,浏览器制造商需要不断监控这种能力的使用,以检测可能滥用本地host通道的其他主机名,随后更新他们的阻止名单。”

他进一步表示:“尽管此解决方案一旦知道正在使用的主机名会有效,但这并不是解决此问题的正确方式,因为跟踪器可能会找到其他途径访问这种能力(例如通过更多短期主机名)。”

长期解决方案应通过设计和开发针对本地host通道的隐私和安全控制,使用户能够了解这种通信,有可能施加某种控制或限制,例如权限或类似用户通知。

Chrome和大多数其他基于Chromium的浏览器按Meta和Yandex的意图执行JavaScript。

Firefox同样如此,但原因并不清楚,该浏览器在后来的代码版本中未能成功执行SDP混淆。

在5月初的beta版中封锁了STUN变种SDP混淆后,两个星期后推出的Chrome生产版本开始同时阻止STUN和TURN变种。

其他基于Chromium的浏览器预计将在接下来的几周内实施这一措施。

Firefox制造商Mozilla的一位代表表示,该组织重视用户隐私,并认真对待此报告。

“我们正在积极调查报告的行为,努力充分理解其技术细节和影响,”Mozilla在一封电子邮件中表示。

“根据我们迄今看到的情况,我们认为这些都是严重违反我们的反追踪政策,我们正在评估解决方案,以保护用户抵御这些新跟踪技术。”

研究人员警告称,当前的修复措施非常针对Meta和Yandex跟踪器中的代码,因此很容易通过简单的更新来绕过。

“他们知道如果其他人以不同的端口号进行尝试,可能会绕过这种保护。”

Gunes Acar提到谷歌的Chrome开发团队。

“但我们的理解是他们想传达一个信息,即他们不会容忍这种滥用。”

Vallina-Rodriguez指出,防止这种滥用的更全面方式是对Android处理本地端口访问的方式进行彻底改革。

“根本问题在于,Android对本地host套接字的访问完全未经控制。”

“用户无法阻止此类通信在其设备上发生。由于JavaScript代码的动态特性以及保持阻止名单最新的困难,持久性地屏蔽这类行为的正确方式是从移动平台和浏览器层面限制此类访问,包括更严格的平台政策以限制滥用。”

图片源于:https://arstechnica.com/security/2025/06/meta-and-yandex-are-de-anonymizing-android-users-web-browsing-identifiers/