这项研究发现,Android 12 及更高版本的设备存在一个安全漏洞,导致第三方应用程序可以绕过“始终开启的 VPN”和“阻止未连接 VPN 的网络连接”设置。
该缺陷存在于 Android 框架的 `startNattKeepaliveWithFd` API 中。尽管该 API 原本旨在供特权系统使用,但它同时也通过 `UdpEncapsulationSocket` 为普通应用程序提供了公共访问路径。由于框架在将流量卸载到硬件(Wi-Fi 固件)之前,未能验证调用者的资源所有权或执行 VPN 锁定策略,普通应用程序因此可以绕过 VPN 隧道。这使得应用能够直接通过物理网络发送周期性的、固定格式的 UDP/4500 数据包,从而向攻击者控制的端点泄露设备的真实 IP 地址和网络活动。
在 Pixel、三星和 Nothing 设备上进行的对照实验证实了这一行为。由于存在缺陷的框架路径在主流 WLAN 芯片组中是通用的,因此该漏洞影响大多数 Android 12 及以上版本的设备。作者建议弃用这些 IPsec/NAT-T 框架 API 的公共访问权限,并实施严格的准入控制,在允许任何硬件卸载通信之前验证资源所有权并核实 VPN 策略的合规性。在漏洞修复之前,需要高安全流量限制的用户应使用具备 VPN 强制功能的外部路由器。