返回

文章详情

WebKit中的IP和DNS泄漏影响代理浏览器和iCloud私人中继

Hacker News2026年8月4日 23:31

基于WebKit的浏览器在iOS和macOS上可以配置为通过代理服务器路由所有网页流量,这也是iOS上的Tor浏览器和我们自己的Psylo的工作方式。我们发现了三个WebKit特性——DNS预取、WebAuthn相关的源请求和WebTransport——它们绕过了配置的代理,直接从设备发送流量,这暴露了用户的真实网络。相同的泄漏也影响了苹果的iCloud私人中继。所有这三个问题在Psylo 1.3.1中得到修复。 总结 # 我们的概念验证网站leaks.psylo.app能够检测到泄漏。基于WebKit的浏览器在iOS和macOS上可以通过代理服务器路由所有网页流量,这也是包括iOS Tor浏览器和我们自己的浏览器Psylo在内的所有代理浏览器的工作原理。网页进行的每一个网络连接都应通过配置的代理,因此网站只会看到代理的IP地址。我们发现了三个WebKit特性绕过了代理配置,直接从设备发送流量: 1. DNS预取通过设备的正常DNS路径解析主机名,暴露了用户的真实DNS服务器,而不是代理的。自iOS 26.0起可用。 2. WebAuthn相关的源请求使操作系统的凭证服务直接从设备获取验证文件。这暴露了设备的真实IP地址。自iOS 18.0起可用。 3. WebTransport打开一个直接的HTTP/3连接并绕过代理,这同样暴露了设备的真实IP地址。自iOS 26.4起可用。 这些泄漏也影响了苹果的iCloud私人中继。需要注意的是,VPN不受影响,因为它们在系统级别隧道化设备的所有网络流量。我们已与Tor项目和iOS上的Onion浏览器开发者联系以解决这些问题。要测试泄漏,您可以访问我们的概念验证网站leaks.psylo.app。修复于Psylo 1.3.1:Psylo现在默认阻止dns-prefetch提示,并禁用WebTransport和WebAuthn。对于真正需要这些功能的网站,可以通过每个独立的开关重新启用每个功能。这种明确的自愿加入将隐私权交还给用户。 背景 # iOS和macOS上的代理配置 # 在iOS 17和macOS 14中引入的WKWebsiteDataStore.proxyConfigurations允许基于WebKit的浏览器在应用程序级别通过代理服务器路由所有的网页流量。这个API是iOS代理浏览器的基础:网页进行的每一个网络连接都应通过配置的代理,因此网站只会看到代理的IP地址。 DNS泄漏的报告 一名Psylo用户的举报开始了这个调查,他在访问某些特定网站时注意到DNS泄漏,我们立刻开始调查。Psylo将每个独立流量通过Mysk私人代理网络(或用户自定义配置的代理)进行路由,因此所有DNS查询都应来自代理服务器,而不应来自设备。看起来只有某些网站受影响而不是所有网站也显得奇怪。随着我们深入调查,找到了DNS泄漏的来源,以及另外两个实际上揭示设备真实IP地址的泄漏。所有三个泄漏都存在于WebKit中,它们绕过了由WKWebsiteDataStore.proxyConfigurations提供的代理设置。由于苹果的App Store政策要求每个iOS浏览器都必须使用WebKit,因此任何依赖这个API进行代理的iOS浏览器都受到影响,包括所有iOS Tor浏览器和Psylo。这些泄漏在苹果的iCloud私人中继中也存在。另一方面,VPN不受这些问题的影响,因为设备的全部网络流量在系统级别通过VPN进行隧道化。 iCloud私人中继 # iCloud私人中继是苹果为iCloud+用户提供的隐私功能。当启用时,它通过双跳中继代理Safari(仅限Safari)的网页流量和DNS查询,旨在使没有单一方(甚至苹果)能够同时看到用户身份和访问的网站。事实证明,本文描述的所有三个泄漏发生在WebKit的标准页面加载过程之外,这意味着私人中继也容易受到相同的泄漏影响。 1. DNS预取 # DNS预取允许网站在需要之前请浏览器解析一个主机名。因此,当后续需要连接该主机名时,查找已经完成,连接更快地开始。这是通过<link rel="dns-prefetch"> HTML标签完成的。当页面包含该标签时,WebKit通过设备的正常DNS路径解析主机名,而不管浏览器通过WKWebsiteDataStore.proxyConfigurations设置的任何代理。页面可以在这些标签中嵌入每个访客唯一的主机名,然后监视查询从其真实网络而非代理到达其自身权威DNS服务器。这就是原始用户报告背后的泄漏,解释了为什么只有某些网站触发。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡