Android-VPN versus App-Berechtigungen: Was die Warnung bedeutet
Der Android-Dialog zur VPN-Zustimmung überträgt eine Paketposition, keinen Zugriff auf Ihre E-Mails, Fotos oder Kontakte. Hier verläuft diese Grenze tatsächlich.
Zwei Android-Dialoge werden ständig verwechselt: die VPN-Zustimmungsabfrage und die Berechtigungsanfragen, die eine App für Ihre Daten stellt. Der erste übergibt eine Netzwerkposition, also die Stelle, an der Pakete gelesen und umgeschrieben werden können. Der zweite übergibt gespeicherte Inhalte, die Android App für App absichert. Behandelt man beides als dasselbe, übertreibt man entweder, was ein Tunnel sehen kann, oder man unterschätzt massiv, was eine entschlossene App als Nächstes verlangt.
Was der Zustimmungsdialog tatsächlich übergibt
Eine App, die VpnService implementiert und BIND_VPN_SERVICE deklariert, bittet das System, das VPN des Geräts zu werden. Nach der Genehmigung erzeugt das Framework eine tun-Schnittstelle und gibt der App einen Dateideskriptor dafür. Alles, was die App danach tut, fließt durch diesen Deskriptor: Sie liest IP-Pakete heraus, entscheidet, was damit geschieht, und schreibt Pakete wieder hinein.
Der Umfang dieser Schnittstelle ist ausdrücklich begrenzt. Routen legen fest, welche Ziele abgefangen werden, und addAllowedApplication oder addDisallowedApplication legt fest, welche Apps sie speisen. Ein VPN pro App, das zwei Apps auflistet, sieht den Rest des Geräts nicht.
Das ist eine Freigabe auf Paketebene, nicht auf Datenebene. Der Dienst sieht die Bytes, die eine App an den Netzwerk-Stack übergibt, adressiert an ein Ziel. Er erhält keinen Zugriff auf den privaten Speicher der sendenden App, ihre Datenbankdateien oder ihren entschlüsselten Speicher. Dateien, die eine App in ihrer eigenen Sandbox abgelegt hat, bleiben genau so schwer zu lesen wie zuvor.
Wo die Paketsicht endet
TLS erledigt seine Aufgabe weiterhin innerhalb des Tunnels, denn der Handshake läuft zwischen App und Server und nicht zwischen App und VPN. Das VPN leitet Chiffretext weiter, den es ohne die Sitzungsschlüssel nicht entschlüsseln kann. Deshalb offenbart ein Tunnel allein nicht den Inhalt einer HTTPS-Seite oder einer geschützten Mailsitzung.
Die Metadaten rund um den Chiffretext sind eine andere Geschichte, und hier zerfallen die meisten selbstsicheren Behauptungen. Ziel-IP, Port, Paketgrößen und Zeitverhalten sind alle sichtbar, dazu der Servername im TLS ClientHello, der normalerweise selbst unter TLS 1.3 im Klartext gesendet wird. Encrypted Client Hello ändert das, aber es ist nicht universell. Einfaches DNS verrät Namen genauso bereitwillig, wenn Abfragen unverschlüsselt hinausgehen.
Ältere oder falsch konfigurierte Protokolle übergeben mehr. Einfaches HTTP, IMAP ohne TLS und eine Reihe von Spiel- und IoT-Protokollen legen ihre Nutzlast für alles offen, was den tun-Deskriptor hält.
Die Berechtigungen, die nie mitkommen
Eine VPN zu genehmigen genehmigt keine Kontakte, SMS, Fotos oder den Medienspeicher. Das sind separate Laufzeitfreigaben, jede mit eigenem Dialog und eigenem Widerrufsweg auf der Einstellungsseite der App. Ein VPN-Client, der Ihre Anrufliste will, muss darum bitten wie jede andere App, und Sie können ablehnen und den Tunnel behalten.
Die Zertifikatsinstallation ist die, auf die man achten sollte, denn sie sieht wie Teil der VPN-Einrichtung aus und ist es nicht. Das Installieren einer Benutzer-CA im Anmeldeinformationsspeicher ändert, welche Zertifikate Android akzeptiert, und seit Android 7.0 ignoriert eine App, die auf API 24 oder neuer abzielt, vom Benutzer hinzugefügte CAs, sofern ihre Netzwerksicherheitskonfiguration nicht mit einem Benutzer-Vertrauensanker zustimmt. Ein Client, der auf einer CA besteht, betreibt möglicherweise legitime Unternehmensüberwachung, oder er verlangt etwas, das der VPN-Dialog nie erwähnt hat.
Barrierefreiheitszugriff liegt noch weiter außen. Ein Dienst mit aktivierter Barrierefreiheit kann Bildschirminhalte anderer Apps lesen, was keine Position auf Paketebene bietet.
Lokaler Filter oder entferntes Gateway
Dieselbe API deckt zwei Produkte ab, die unterschiedliche Vertrauensstufen verdienen. Eine Firewall oder ein Werbeblocker auf dem Gerät nimmt den tun-Deskriptor und beantwortet den Verkehr lokal, ohne ihn je an einen Server zu senden, den er selbst betreibt. Ein echter Tunnel leitet diese Pakete an ein Gateway anderswo weiter, und dieser Betreiber sieht dieselben Metadaten vom anderen Ende und entscheidet zugleich, was zurückkommt.
Ein praktischer Weg, sie zu unterscheiden, ist, die eigene öffentliche Adresse mit ein- und ausgeschaltetem VPN zu prüfen und zu schauen, ob die Benachrichtigung einen entfernten Endpunkt nennt. Ändert sich die Adresse nie, läuft der Verkehr wahrscheinlich auf dem Gerät selbst im Kreis.
Beide Fälle sind weiterhin eine Paketposition. Der Unterschied ist, wer sonst noch am Ausgang steht.
Prüfen Sie, was Sie genehmigt haben
Öffnen Sie Einstellungen, dann Netzwerk und Internet, dann VPN, und lesen Sie den Eintrag statt des Symbols in der Statusleiste. Immer aktives VPN und Verbindungen ohne VPN blockieren sind Geräteeinstellungen, die die Schnittstelle am Leben halten und Lecks abschneiden; sie erweitern nichts. Vom selben Bildschirm aus können Sie das Profil vergessen und die Freigabe widerrufen.
Gehen Sie dann die anderen Berechtigungen durch. App-Info zeigt, welche Laufzeitfreigaben der Client besitzt, und die Sicherheitseinstellungen zeigen, ob gleichzeitig ein Benutzerzertifikat installiert wurde. Beides lässt sich unabhängig entfernen.
Die Frage, die es wert ist, beantwortet zu werden, ist eng: Welche Pakete treten in diesen Dienst ein, wohin gehen sie, und was behält die Implementierung. Alles andere im Dialog ist Rauschen. Die VpnService-Referenz ist die maßgebliche Liste dessen, was die Schnittstelle offenlegt.