WebKit 中的 IP 和 DNS 泄漏会影响代理浏览器和 Apple iCloud Private Relay

来源: https://mysk.blog/2026/08/04/webkit-proxy-icloud-private-relay-ip-leak/

iOS 和 macOS 上基于 WebKit 的浏览器可以配置为将所有网络流量路由到代理服务器,iOS 上的 Tor 浏览器和我们自己的 Psylo 浏览器都是这样工作的。我们发现了 WebKit 的三个特性——DNS 预取、WebAuthn 相关源请求和 WebTransport——它们会绕过配置的代理,直接从设备发送流量,从而暴露用户的真实网络。同样的漏洞也影响了苹果的 iCloud Private Relay。这三个漏洞均已在 Psylo 1.3.1 中修复。

Summary

iOS 和 macOS 上基于 WebKit 的浏览器可以配置为将所有网络流量路由到代理服务器。所有 iOS 上的代理浏览器,包括 iOS Tor 浏览器和我们自己的浏览器 Psylo,都是这样工作的。网页建立的每个网络连接都应该通过配置的代理服务器,因此网站只能看到代理服务器的 IP 地址。我们发现了 WebKit 的三个特性,它们可以绕过代理配置,直接从设备发送流量:

DNS prefetching 通过设备自身的 DNS 路径解析主机名,从而显示用户的真实 DNS 服务器,而不是代理服务器的 DNS 服务器。此功能自 iOS 26.0 起可用。

WebAuthn Related Origin Requests 使操作系统凭证服务直接从设备获取验证文件。这会暴露设备的真实 IP 地址。此功能自 iOS 18.0 起可用。

WebTransport 会直接建立 HTTP/3 连接,绕过代理服务器,但这也会暴露设备的真实 IP 地址。此功能自 iOS 26.4 起可用。

这些泄露事件也会影响苹果的 iCloud Private Relay。需要注意的是,VPN 不受影响,因为它们会在系统层面上对设备的全部网络流量进行隧道传输。

Psylo 1.3.1 已修复: Psylo 现在默认阻止dns-prefetch 提示信息并禁用 WebTransport 和 WebAuthn。对于确实需要这些功能的网站,可以通过每个独立组件的开关重新启用它们。这种明确的选择加入机制将隐私权衡权交到了用户手中。详情请参阅Psylo 1.3.1 中引入的缓解措施。

Background

iOS 和 macOS 上的 Proxy Configuration

iOS 17 和 macOS 14 中引入的这项功能,WKWebsiteDataStore.proxyConfigurations 允许基于 WebKit 的浏览器在应用层将所有网络流量路由到代理服务器。该 API 是 iOS 上代理浏览器的基础:网页建立的每个网络连接都应该通过配置的代理服务器,因此网站只能看到代理服务器的 IP 地址。

Psylo 用户报告 DNS 泄漏

这项调查始于一位Psylo用户提交的错误报告,该用户发现访问某些特定网站时会出现 DNS 泄漏,我们立即展开了调查。Psylo 会将每个 silo 的所有流量路由到Mysk 私有代理网络(或用户自行配置的自定义代理),因此所有 DNS 查询都应该来自代理服务器,而不是用户设备本身。此外,该问题仅影响部分网站而非全部网站,这一点也令人费解。

随着调查的深入,我们找到了DNS泄漏的源头,以及另外两个能够暴露设备真实IP地址的泄漏点。这三个泄漏点都存在于WebKit中,它们绕过了提供的代理设置WKWebsiteDataStore.proxyConfigurations 。由于苹果App Store的政策要求所有iOS浏览器都必须使用WebKit,因此任何依赖此API进行代理的iOS浏览器都会受到影响,包括所有iOS Tor浏览器和Psylo。这些泄漏点也存在于苹果的iCloud Private Relay中。另一方面,VPN不受这些问题的影响,因为设备的所有网络流量都会在系统层面通过VPN进行隧道传输。

iCloud Private Relay

iCloud Private Relay是苹果为 iCloud+ 订阅用户提供的隐私功能。启用后,它会将 Safari(且仅限 Safari)的网络流量和 DNS 查询代理到两跳中继服务器,其设计目的是确保任何一方(包括苹果)都无法同时看到您的身份和访问的网站。然而,本文中提到的所有三个漏洞都发生在 WebKit 的标准页面加载过程之外,这意味着 Private Relay 也容易受到同样的漏洞影响。

1. DNS Prefetching

DNS 预取允许网站在需要主机名之前就请求浏览器解析该主机名。这样,当稍后需要连接到该主机名时,解析已经完成,连接速度更快。这是通过<link rel="dns-prefetch"> HTML 标签实现的。

当页面包含该标签时,WebKit 会通过设备的正常 DNS 路径解析主机名,而不管浏览器通过 设置了什么代理WKWebsiteDataStore.proxyConfigurations 。页面可以在这些标签中嵌入每个访问者独有的主机名,然后观察查询是否从访问者的真实网络到达其自身的权威 DNS 服务器,而不是通过代理服务器。

这就是最初用户报告背后的漏洞,也解释了为什么只有某些网站会触发它:如果没有页面上的预取标签,WebKit 就不会执行此 DNS 查询。

私有中继无法捕获到这种情况。它通常会代理 Safari 的 DNS 查询,但这些预取查询会跳过它。即使启用了私有中继,查询仍然会从设备的真实网络到达权威服务器。

桌面版 Safari 自 Safari 5 起就已支持此功能<link rel="dns-prefetch"> ,但 iOS 直到 iOS 26.0(2025 年 9 月)才开始支持,当时 WebKit 在移除 iOS 旧版隐式推测性 DNS 预取功能的同一更改中启用了此功能(bug 285744,290327 @ main浏览器兼容性数据)。该解析器在前一年已被重写,目的是在隐私浏览期间将主机名从系统日志中移除(bug 272190,279199 @ main)。

2. WebAuthn Related Origin Requests

WebAuthn 是支持密码验证的 Web 标准。通常情况下,一个密码绑定到单个域,但相关源请求 (Related Origin Requests) 允​​许组织在其拥有的少量域中使用同一个密码。

rpId 为了实现这一点,当一个页面请求一个与其自身来源不同的凭据时,客户端首先获取https://<rpId>/.well-known/webauthn 一个 JSON 文件,其中列出了哪些来源可以使用该凭据rpId

这种验证请求并非来自浏览器的网络协议栈。WebKit 将 WebAuthn 操作交给操作系统的凭证服务,由其直接从设备发出 HTTPS 请求,而无需感知主机应用配置的任何代理。页面可以自行选择rpId 主机,即使没有用户交互,请求也会触发:页面mediation: "conditional" 不会显示任何用户界面。

同样的道理也适用于 iCloud 私密中继。由于获取请求是由操作系统的凭证服务而非 Safari 发出的,因此它不会进入私密中继的代理路径。无论如何,目标服务器都能看到设备的真实 IP 地址。

苹果在Safari 18.0 的 WebKit 功能中宣布了 iOS 18.0 / Safari 18.0(2024 年 9 月)的这项功能。WebKit 的底层架构在当年早些时候已经实现(bug 268426,274592 @ main),甚至在 iOS 17.4 中以非功能形式发布;执行获取操作的系统组件直到 18.0 才获得支持。

3. WebTransport

WebTransport 是 WebSocket 的低延迟替代方案。它基于 HTTP/3 和 QUIC 运行,提供多个独立流以及不可靠的数据报传输,并且在 QUIC 不可用时可以回退到 HTTP/2。

调用new WebTransport(url) 会直接从设备打开一个 QUIC 连接。WebKit 使用自己的网络参数建立连接,并且从不向其提供会话代理,因此服务器看到的是设备的真实 IP 地址,而不是代理的 IP 地址。

私有中继在这里也无济于事。WebKit 在私有中继代理的 Web 流量之外建立连接,因此即使启用了私有中继,WebTransport 服务器仍然可以获知设备的真实 IP 地址。

但有一个例外:Onion Browser 的“Silver”安全级别将 WebKit 配置为锁定模式,完全禁用 WebTransport,因此 Silver 级别的 Onion Browser 用户不会受到此特定漏洞的影响。

该 API 的最初迹象出现在 2023 年(bug 260810,267408 @ main),但一直处于禁用状态,直到 2025 年 12 月才对具有足够 Network.framework 支持的平台启用(bug 303453,303860 @ main)。它随 iOS 26.4(2026 年 3 月)正式发布;请参阅Safari 26.4 的 WebKit 功能Safari 26.4 发行说明

Psylo 1.3.1 版本中引入的缓解措施

我们在 Psylo 1.3.1 中修复了所有三个漏洞:

  • Psylo 会阻止dns-prefetch 提示,因此页面无法再使您的设备解析攻击者控制的主机名。
  • WebTransport 默认处于禁用状态。
  • WebAuthn 默认处于禁用状态。

Passkeys 和 WebTransport 都有其合法用途,因此两者都可以通过每个独立服务器的开关随时重新启用。这确保了 Psylo 开箱即用时不会发生数据泄露,而需要在特定站点上使用这些功能的用户可以明确选择启用,并清楚地了解其中的利弊。

检测地址: https://leaks.psylo.app/

后续: https://9to5mac.com/2026/08/11/apple-faces-class-action-lawsuit-for-fraud-over-icloud-private-relay-flaw/

苹果公司因 iCloud 私有中继漏洞面临“欺诈”集体诉讼

上周,安全研究人员披露了苹果iCloud私密中继功能的一个漏洞。虽然该功能旨在保护您的 IP 地址不被您访问的网站获取,但由于存在漏洞,它经常无法达到这一目的

任何时候苹果产品或服务出现问题,都必然会引发集体诉讼,这次也不例外……

什么是 iCloud 私有中继?

正如我们之前解释过的,iCloud Private Relay 并非严格意义上的 VPN,但它旨在提供类似的隐私保护功能,防止您在使用 Safari 浏览器时被追踪网络活动。以下是苹果公司的描述:

  • 您的 IP 地址对您的网络服务提供商和由苹果公司运营的第一个中继服务器是可见的。您的 DNS 记录已加密,因此双方都无法看到您尝试访问的网站地址。
  • 第二个中继由第三方内容提供商运营,它会生成一个临时 IP 地址,解密您请求的网站名称,并将您连接到该网站。

换句话说,您的网络服务提供商 (ISP) 只能看到您正在访问苹果公司的服务器,而您访问的网站只能看到该服务器生成的 IP 地址。

缺陷是什么?

安全研究人员发现,任何支持密码的网站都可以看到你的真实 IP 地址。

由于Passkey工作原理的特殊性,用户的设备会在浏览器之外发起一个网络请求。这意味着,该请求实际上绕过了私有中继,暴露了用户的真实IP地址,尽管对用户而言,这看起来就像是在正常地与网站交互。

更糟糕的是,网站是否真的 支持Passkey并不重要:仅仅假装支持密码就会泄露你的 IP 地址。

集体诉讼

克拉克森律师事务所(Clarkson Law Firm)已提起集体诉讼,指控苹果公司存在虚假广告、误导性陈述和欺诈行为。该律师事务所此前曾因Siri AI延迟发布而获得 2.5 亿美元的和解金。

[苹果公司]在被告制造、营销、宣传、贴标和销售[iCloud+]订阅服务时,明知或应当知道所质疑的陈述是虚假的、误导性的、欺骗性的和非法的。

克拉克森律师事务所的合伙人蒂姆·乔丹诺告诉我们,该事务所认为这是“对消费者信任的令人愤慨的背叛”。

“苹果公司建立起整个品牌的基础,就是承诺在其他公司都不愿保护用户隐私的时候,它会保护用户隐私。如今,苹果的iCloud用户却发现,多年来他们支付的高额费用,换来的保护根本不起作用,反而让他们暴露在苹果警告过的追踪、用户画像和定向攻击之下,这简直是对消费者信任和法律的公然践踏和背叛。”

我们已联系苹果公司征求意见,如有任何回复,我们将及时更新。

习家平语:

这都能发起诉讼的 ?维权意识和法律环境确实.

这要是习主席来了,人在法下,法在习下