AndroidのVPNロックダウンをすり抜けるNAT-T keepaliveの話
Androidの「Always-on VPN」と「Block connections without VPN」は、通信がVPNの外に漏れないようにするための仕組みだと思われてきました。ところが今回の報告では、普通のアプリが公開APIを使うだけで、VPNの外側にUDP/4500のkeepaliveパケットを出せてしまうとされています。しかも対象は特定機種だけではなく、Android 12以降の多くの端末にまたがる可能性がある、というのがこの話の重さです。単なる学術的な指摘ではなく、「VPNで守られているはずの通信の境界がどこまで信用できるのか」を突く内容になっています。 元記事が示しているのは、AndroidのNAT-T keepalive offloadが、VPN lockdownをまたいで物理ネットワークにパケットを出してしまう、という不具合です。NAT-TはIPsecでよく使われるUDP 4500番ポートの仕組みで、Androidではアプリが `IpSecManager.UdpEncapsulationSocket` を開き、`ConnectivityManager.createS
papoo.work