Android VPN versus oprávnění aplikací: co varování znamená
Souhlasový dialog VPN v Androidu uděluje pozici na úrovni paketů, ne přístup k e-mailu, fotkám nebo kontaktům. Tady ta hranice skutečně leží.
Dva dialogy v Androidu se neustále pletou: výzva k souhlasu s VPN a žádosti o oprávnění, která aplikace vznesou na vaše data. První předává síťovou pozici, místo, kde lze pakety číst a přepisovat. Druhá předává uložený obsah, který Android střeží aplikaci po aplikaci. Když je považujete za jednu věc, buď přeceňujete, co tunel může vidět, nebo hrubě podceňujete, co si odhodlaná aplikace vyžádá příště.
Co dialog souhlasu skutečně předává
Aplikace, která implementuje VpnService a deklaruje BIND_VPN_SERVICE, žádá systém, aby se stala VPN zařízení. Po schválení framework vytvoří rozhraní tun a dá aplikaci pro něj deskriptor souboru. Všechno, co aplikace potom dělá, proudí přes tento deskriptor: čte z něj IP pakety, rozhoduje, co s nimi udělá, a zapisuje pakety zpět dovnitř.
Rozsah tohoto rozhraní je výslovný. Trasy rozhodují, které cíle se zachytí, a addAllowedApplication nebo addDisallowedApplication rozhoduje, které aplikace do něj přispívají. VPN pro jednotlivé aplikace, která uvádí dvě aplikace, nevidí zbytek zařízení.
To je oprávnění na úrovni paketů, ne na úrovni dat. Služba vidí bajty, které aplikace předá síťovému zásobníku, adresované na cíl. Nedostane přístup k soukromému úložišti odesílající aplikace, k jejím databázovým souborům ani k její dešifrované paměti. Soubory, které aplikace uložila ve svém vlastním sandboxu, zůstávají stejně obtížně čitelné jako dřív.
Kde pohled na pakety končí
TLS stále dělá svou práci uvnitř tunelu, protože handshake probíhá mezi aplikací a serverem, nikoli mezi aplikací a VPN. VPN předává šifrovaný text, který bez klíčů relace nedokáže dešifrovat. Proto tunel sám o sobě neodhalí obsah stránky HTTPS ani chráněné e-mailové relace.
Metadata kolem šifrovaného textu jsou jiný příběh a právě tady se většina sebevědomých tvrzení rozpadá. Cílová IP adresa, port, velikosti paketů a časování jsou vidět, stejně jako jméno serveru v TLS ClientHello, které se obvykle posílá otevřeně i pod TLS 1.3. Encrypted Client Hello to mění, ale není univerzální. Obyčejný DNS jména prozradí stejně snadno, když dotazy odcházejí nešifrované.
Starší nebo špatně nakonfigurované protokoly předávají víc. Obyčejný HTTP, IMAP bez TLS a řada herních a IoT protokolů vystavuje své užitečné zatížení čemukoli, co drží deskriptor tun.
Oprávnění, která s tím nikdy nepřicházejí
Schválení VPN neschvaluje kontakty, SMS, fotky ani mediální úložiště. To jsou samostatná oprávnění za běhu, každé s vlastním dialogem a vlastní cestou odvolání na stránce nastavení aplikace. Klient VPN, který chce váš seznam hovorů, o něj musí požádat jako kterákoli jiná aplikace, a vy můžete odmítnout a tunel si ponechat.
Instalace certifikátu je ta, na kterou je třeba dávat pozor, protože vypadá jako součást nastavení VPN, ale není. Instalace uživatelské CA do úložiště přihlašovacích údajů mění, které certifikáty Android přijme, a od Androidu 7.0 aplikace cílící na API 24 nebo novější ignoruje uživatelem přidané CA, pokud se její konfigurace zabezpečení sítě nepřihlásí s uživatelským kořenem důvěry. Klient, který na CA trvá, může provádět legitimní podnikové odposlouchávání, nebo může žádat něco, co dialog VPN nikdy nezmínil.
Přístup ke zpřístupnění stojí ještě dál. Služba s povoleným zpřístupněním může číst obsah obrazovky jiných aplikací, což žádná pozice na úrovni paketů neposkytuje.
Místní filtr, nebo vzdálená brána
Stejné API pokrývá dva produkty, které si zaslouží různou míru důvěry. Firewall nebo blokátor reklam v zařízení vezme deskriptor tun a odpovídá na provoz lokálně, aniž by ho kdy poslal na server, který sám provozuje. Skutečný tunel předává tyto pakety bráně někde jinde a tento operátor vidí stejná metadata z druhého konce a zároveň rozhoduje, co se vrátí.
Praktický způsob, jak je rozeznat, je zkontrolovat svou veřejnou adresu s VPN zapnutou i vypnutou a podívat se, zda oznámení jmenuje vzdálený koncový bod. Pokud se adresa nikdy nemění, provoz se pravděpodobně vrací na samotném zařízení.
Oba případy jsou stále pozicí na úrovni paketů. Rozdíl je v tom, kdo další stojí u východu.
Prověřte, co jste schválili
Otevřete Nastavení, pak Síť a internet, pak VPN, a čtěte položku, ne ikonu ve stavovém řádku. Trvalá VPN a Blokovat připojení bez VPN jsou nastavení zařízení, která drží rozhraní živé a odřezávají úniky; nic nerozšiřují. Na stejné obrazovce můžete profil zapomenout a oprávnění odvolat.
Pak projděte ostatní oprávnění. Informace o aplikaci ukazují, která oprávnění za běhu klient drží, a nastavení Zabezpečení ukazují, zda byl ve stejnou dobu nainstalován uživatelský certifikát. Kterékoli z nich lze odstranit nezávisle.
Otázka, na kterou stojí za to odpovědět, je úzká: které pakety do této služby vstupují, kam jdou a co implementace uchovává. Všechno ostatní v dialogu je šum. Referenční příručka VpnService je autoritativní seznam toho, co rozhraní vystavuje.