正在对我们的应用程序进行的安全审计发现,Android 会泄露某些流量,而 VPN 服务无法阻止这些流量。 审计报告即将公布。 本篇文章旨在深入探讨这一发现,即MUL22-03
.
我们研究了报告中提到的漏洞,得出的结论是 Android 会在 VPN 通道外发送连接检查。 每次设备连接到 WiFi 网络时,它都会这样做,即使在阻止没有VPN的连接设置已启用。
我们理解为什么安卓系统希望默认发送这些流量。 例如,如果网络上有一个专属门户,那么在用户登录之前,连接将无法使用。 因此,大多数用户都希望进行自选门户检查,并允许他们显示和使用该门户。 不过,对于某些威胁模型的用户来说,这可能会影响他们的隐私。 因为似乎没有办法*要阻止 Android 泄漏这些流量,我们需要在 Android 问题跟踪器上报告了该问题.
即使你不介意部分流量进入 VPN 隧道之外,我们也认为设置的名称("阻止没有VPN的连接"),而安卓的相关文档则具有误导性。 给用户的印象是,除了通过 VPN,任何流量都不会离开手机。 因此,我们报告了另一个问题我们建议改进 Android 文档。
*: 没有面向用户的设置来禁用连接性检查,但可以使用开发工具(adb)来禁用。我们出版了一本指南了解如何操作。 请注意,这是一项技术性很强的工作,需要将设备连接到电脑并安装软件。
ugreen绿联
- 确保永远在线的VPN和阻止没有VPN的连接已在系统设置中启用。
- 断开 WiFi 连接。
- 开始监控进出安卓设备的网络流量,例如运行
tcpdump
在你的路由器上。 - 连接 WiFi。
- 请注意,这些流量不仅限于 VPN 流量,还包括 DNS 查询、HTTP(S) 流量以及可能的 NTP 流量。
相比之下,注重隐私和安全的安卓发行版 GrapheneOS 为用户提供了禁用连接检查的选项。 如果启用该选项,我们就无法观察到上述泄漏。
ugreen绿联
控制连接检查服务器的一方和任何观察网络流量的实体都可以观察和分析连接检查流量。 即使信息内容只显示 "某些安卓设备已连接",元数据(包括源 IP)也可用于获取更多信息,尤其是与 WiFi 接入点位置等数据相结合时。 不过,由于这种去匿名化尝试需要相当复杂的行为者,我们的大多数用户可能不会认为这是一个重大风险。
ugreen绿联
我们无法在应用程序中修复泄漏。 不过,我们可以告知用户这些信息的存在,并对安卓操作系统的局限性保持透明。 这样每个人都能做出明智的决定。
最后,我们建议谷歌在 Android 系统中采用禁用连接检查的功能,就像在 GrapheneOS 中一样。