HeadlinesBriefing favicon HeadlinesBriefing.com

Android NAT-T Keepalive 绕过暴露 VPN 关闭缺陷

Hacker News •
×

Android’s Always-on VPN and “Block connections without VPN” settings create a user-visible expectation that traffic from covered applications will not leave through a non-VPN path. However, a normal application can violate this boundary using Android’s public NAT-T socket-keepalive API, causing clear UDP/4500 packets to reach the physical router outside the VPN tunnel. Controlled captures on a Pixel 8 Pro running Android 16 build CP1A.260505.005 confirmed packets at a 10-second interval with lockdown enabled.

A Samsung SM-F966B and Nothing A059 (Asteroids), both on Android 16, exhibited the same behavior, with the Samsung device recording a continuous router-directed active-slot lease for 24 hours and 32 minutes. The Nothing result confirmed public-path admission and active callback on a third OEM. Source history traces the flaw to a collapsed trust model in start Natt Keepalive With Fd(...), where a privileged raw-fd API evolved into a public Udp Encapsulation Socket path, and admission no longer authenticates the fd/resource pair or enforces the original caller UID’s current VPN policy before offload.

Runtime confirmation across three OEMs and two WLAN families—representing 91.24% of estimated Android-derived shipments—establishes device-class exposure affecting most Android 12+ devices. The remaining 8.76% is unresolved. An F-Droid/Izzy On Droid study of 4,679 Git origins found no framework IPsec/IKE/NAT-T API use; manual audit identified 73 Android Vpn Service apps.