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