苹果的私密中继可能导致系统忽视防火墙规则
2022年4月25日
(测试版)功能会在不遵守系统防火墙规则的情况下,向苹果服务器发送数据,造成一种泄露,既我们也无法通过其他手段阻止它,除非。
私密中继功能几乎类似于VPN隧道,或与Tor的工作原理相似。它在你的网络流量到达互联网之前,通过中继服务器以加密形式进行路由。该功能仍处于测试阶段,只在某些地区提供,并且需要付费的iCloud+订阅才能启用。
当我们在Mullvad监控我们的网络连接并进行应用开发时,看到了一些应当不存在的东西:QUIC流量在VPN隧道外离开电脑!这就是泄露!我们追踪到发送数据的原因是私密中继功能,禁用私密中继后,泄露现象停止了。虽然我们不确定这些流量是否属于私密中继,但它确实触发了这一现象。
值得注意的是,一旦在(macOS设备上的系统防火墙)中添加任何防火墙规则,私密中继基本上会自行禁用。MullvadVPN应用程序确实添加防火墙规则。当你连接Mullvad应用程序时,私密中继会声明已禁用。我们未发现用户流量与泄漏数据包之间有任何关联。我们认为这些流量只是一些呼叫苹果的心跳信号。我们不知道具体传输了哪些信息,但由于目标是苹果服务器,这强烈暗示你的本地网络和ISP你可能是macOS用户。
如何重现泄露
如果你拥有iCloud+订阅,可以轻松自己测试。请按照以下步骤观察私密中继不遵守你的防火墙规则:
- 通过
sudo tcpdump udp port 443
设置对所有QUIC流量的监控。 - 并验证其是否正常工作(它应该显示“私密中继已激活”的通知)。如果在启动期间连接Mullvad VPN应用程序将阻止其正常工作。如果私密中继不可用,请卸载我们的应用程序或任何其他有问题的VPN客户端,重启并重新开始。
- 确认可以观察到QUIC流量。在应用防火墙规则之前,若发送一些字节通过
nc -u apple.com 443
,你应该也能在tcpdump
中看到流量。 - 在
/etc/pf.conf
中添加一个PF规则以阻止QUIC流量,重新加载规则并启用防火墙。 - 将
block return out quick proto udp from any to any port 443
添加到/etc/pf.conf
。 - 通过
sudo pfctl -f /etc/pf.conf
重新加载规则。 - 通过
sudo pfctl -F states
刷新任何防火墙状态。 - 通过
sudo pfctl -e
启用PF。 - 验证你无法再通过
nc -u apple.com 443
发送流量。 - 现在你可以验证,尽管通过
tcpdump
观察到仍有少量QUIC流量从你的计算机流出,但你将无法在UDP上与端口443的主机建立新的QUIC连接。这意味着私密中继并没有遵循与nc
相同的规则。
还值得注意的是,这些QUIC泄露会发生在物理网络接口上,即使你连接VPN并设置路由表将所有流量通过VPN接口路由。因此,它不仅绕过了防火墙规则,也没有遵守路由表。
要恢复你的计算机和防火墙,只需从 /etc/pf.conf
中移除规则,然后再次运行 sudo pfctl -f /etc/pf.conf
。
接下来该怎么办?
我们不知道有什么方法可以防止私密中继泄露这些流量,除了完全禁用该功能。禁用方法与启用相同。请参见。
由于流量是加密的,因此我们很难推测泄露的严重性,这意味着我们无法确切了解其内容。然而,这确实向你的本地网络和ISP发出了你在使用macOS设备的强烈信号。如果你的威胁模型无法接受这一点,你应该禁用私密中继。