Google在设计 Android 系统时基于安全和隐私考虑,已经为启用 VPN 加密隧道时添加始终使用加密隧道以及阻止没有经过加密的连接,该功能原则上可以在用户重启系统、切换 VPN 以及其他情况下,仅在 VPN 已经成功连接时才发送 DNS 请求,避免相关请求直接通过非加密隧道发送。
瑞典加密隧道提供商 Mulvad VPN 的用户反馈称,Android系统的相关阻止选项不起作用仍然会泄露用户的 DNS 查询,Mulvad VPN 经过调查后确认了这个问题,并且在 Android 14 上都可以复现该问题。
这意味着 Android 14 及更早版本可能都存在类似的问题,即泄露用户的 DNS 查询引起一些隐私问题,这个问题必须由Google发布更新进行修复。
问题发生在哪里:
调查发现直接调用 getaddrinfo C 函数的应用程序会碰到这个错误,该函数提供从域名到 IP 地址的协议转换。
当 VPN 处于活动状态但并未配置 DNS 服务器或者 VPN 应用重新配置加密隧道、崩溃以及被迫终止时,Android系统都没有按照设计预期阻止 DNS 请求,也就是直接通过非加密隧道发送 DNS 请求。
DNS 请求的泄露可被攻击者用来收集用户访问的网站和平台并分析用户的偏好以及进行针对性的钓鱼等,这个问题属于比较严重的隐私错误。
理论上说所有相关应用程序都受这个问题的影响,同时 Mulvad VPN 并未找到潜在的缓解方案,相反这个漏洞必须由上游提供商处理。
Google回应称正在调查:
Mulvad VPN 已经将这个问题通报给Google,Google方面回应称 Android 系统的安全和隐私是重中之重,Google已经收到相关报告目前正在调查中。
当Google确认问题后Google应该会发布补丁进行修复,问题在于一些老旧的 Android 版本如何修复是个问题,这些老旧版本可能已经停止支持或者搭载这些版本的手机无法获得 OEM 提供的更新,这都会导致用户处于不安全状态。