2024年5月3日 隐私 应用
我们最近注意到Android上存在多种潜在的DNS泄漏问题。这些问题源自Android系统本身的漏洞,仅影响某些应用程序。
在2024年4月22日的星期一,我们发现了一个来自Reddit的用户报告,内容是关于一个DNS泄漏。该报告详细描述了用户在启用“阻止没有VPN的连接”时,禁用和启用VPN导致DNS查询泄漏的情况。我们立即开始了内部调查,并确认了这一问题。调查还发现了其他可能导致Android上DNS泄漏的场景。
我们识别出Android系统可能导致DNS流量泄漏的场景:
当VPN活动但未配置任何DNS服务器时。在VPN应用程序重新配置隧道或被强制停止/崩溃的短时间内。泄漏似乎仅限于对C函数getaddrinfo的直接调用。使用这种方式解析域名的应用程序会在上述场景中导致泄漏。我们没有发现仅使用Android API如DnsResolver的应用存在泄漏。Chrome浏览器是一个可以直接使用getaddrinfo的应用示例。
上述情况无论是否启用“始终开启VPN”和“阻止没有VPN的连接”,都适用。这与预期的操作系统行为不符,因此应在操作系统中进行修复。
我们确认这些泄漏在多个版本的Android上发生,包括最新版本Android 14。
免费的翻外墙app下载我们的应用在阻止状态下当前并不设置任何DNS服务器。当我们的应用无法以不可恢复的方式建立隧道时,它会进入阻止状态。在此状态下,应用会停止流量离开设备。然而,在这个状态下并未设置任何DNS服务器,导致上述描述的DNS泄漏可能发生。我们将通过暂时设置一个虚假的DNS服务器来规避操作系统的漏洞。您可以期待不久后发布包含此修复的版本。
在应用中缓解隧道重新连接期间的泄漏相对困难。我们仍在寻找解决方案。我们可能会减少隧道重新配置的次数,但目前我们认为无法完全防止此泄漏。
应该明确的是,这些变通方案不应在任何VPN应用中被需求。应用使用getaddrinfo来解析域名并没有错。相反,这些问题应在操作系统中解决,以保护所有Android用户,无论他们使用什么应用。
我们已向谷歌报告了问题并提出改进建议,希望他们能迅速处理。
以下步骤将重现上述第二种场景,其中VPN用户更改隧道配置,例如切换到其他服务器或更改DNS服务器。
我们使用WireGuard应用程序,因为它已成为Android VPN实现的参考。值得注意的是,这些泄漏可能也能通过其他任何Android VPN应用程序重现。我们使用Chrome来触发泄漏,因为这是我们已确认使用getaddrinfo的一款应用。
下载spamgetrequestshtml安装WireGuard应用和Chrome将wg1conf和wg2conf导入WireGuard在WireGuard应用中启用wg1隧道并允许VPN权限在Android VPN设置中为WireGuard启用“始终开启VPN”和“阻止没有VPN的连接”通过使用如 tcpdump 开始在路由器上捕获数据 tcpdump i ltINTERFACEgt host ltIP of android devicegt
将屏幕分割,以便并排显示WireGuard和Chrome
使用Chrome打开spamgetrequestshtml并点击“开始”在WireGuard应用中来回切换wg1和wg2,直到在下一步中看到泄漏。在路由器上观察到类似以下DNS流量:115027816359 IP PixelTabletlan53353 gt OpenWrtlan53 11200 A 307lf5rgn619282115027519zmullvadtestlan (65)
115027816359 IP PixelTabletlan48267 gt OpenWrtlan53 44347 A 307lf5rgn619284115027579zmullvadtestlan (65)115027816396 IP PixelTabletlan16747 gt OpenWrtlan53 44584 A 307lf5rgn619289115027729zmullvadtest (61)115027816458 IP OpenWrtlan53 gt PixelTabletlan53353 11200 NXDomain 0/0/0 (65)115027816476 IP PixelTabletlan45727 gt OpenWrtlan53 40503 A 307lf5rgn619290115027759zmullvadtest (61)115027816542 IP OpenWrtlan53 gt PixelTabletlan48267 44347 NXDomain 0/0/0 (65)115027816588 IP PixelTabletlan43821 gt OpenWrtlan53 36295 A 307lf5rgn619291115027789zmullvadtest (61) 115027816625 IP OpenWrtlan53 gt PixelTabletlan16747 44584 NXDomain 0/0/0 (61)
由于启用了“阻止没有VPN的连接”,因此除了加密的WireGuard流量外,设备本不应有任何流量离开,但这里我们看到未加密的DNS流量离开了设备。
DNS泄漏可能对用户的隐私产生严重影响,并且可以用来推测用户的大致位置或了解用户使用的网站和服务。
这些发现再次表明“阻止没有VPN的连接”并没有如其名称或文档所指示的那样发挥作用,并且存在多处缺陷。在上述情况下,应用仍可能泄漏DNS流量,如之前报道的内容所示,它仍然泄漏连接检查流量。
根据您的威胁模型,这可能意味着您应避免在Android设备上进行任何敏感操作,或采取其他措施来防止泄漏。我们旨在部分缓解我们应用中的这些问题,因此请确保保持应用更新。
你需要了解的黑暗网络事实
暗网暗网事实揭晓:关于秘密网络的迷思与统计数据名副其实的暗网充满了神秘感。什么是真相,什么是传言?一些暗网事实会让你震惊,另一些则会让你感到害怕,还有一些看似的暗网“事实”根本不算事实。通过我们的综合指南,分辨出暗网的真相与虚构。随后,使用强大的暗网监控工具,帮助保护你的个人信息,防止数据损失、数据...