Android VPN kontra apptilladelser: hvad advarslen betyder
Android-dialogen for VPN-samtykke giver en pakkeposition, ikke adgang til din e-mail, dine billeder eller dine kontakter. Her ligger den grænse i virkeligheden.
To Android-dialoger bliver hele tiden blandet sammen: VPN-samtykkeanmodningen og de tilladelser, en app beder om til dine data. Den første overdrager en netværksposition, det sted hvor pakker kan læses og omskrives. Den anden overdrager lagret indhold, som Android beskytter app for app. Behandler man dem som én ting, overdriver man enten, hvad en tunnel kan se, eller undervurderer groft, hvad en beslutsom app vil bede om næste gang.
Hvad samtykkedialogen faktisk overdrager
En app, der implementerer VpnService og erklærer BIND_VPN_SERVICE, beder systemet om at blive enhedens VPN. Efter godkendelse opretter frameworket et tun-interface og giver appen en filbeskrivelse til det. Alt, hvad appen gør bagefter, løber gennem den filbeskrivelse: den læser IP-pakker ud, beslutter hvad der skal ske med dem og skriver pakker ind igen.
Omfanget af det interface er eksplicit. Ruter bestemmer, hvilke destinationer der fanges, og addAllowedApplication eller addDisallowedApplication bestemmer, hvilke apps der fodrer det. En VPN pr. app, der lister to apps, ser ikke resten af enheden.
Det er en tilladelse på pakkeniveau, ikke på dataniveau. Tjenesten ser de bytes, en app afleverer til netværksstakken, adresseret til en destination. Den får ikke adgang til den afsendende apps private lager, dens databasefiler eller dens dekrypterede hukommelse. Filer, som en app har gemt i sin egen sandkasse, er præcis lige så svære at læse som før.
Hvor pakkevisningen stopper
TLS gør stadig sit arbejde inde i tunnelen, fordi håndtrykket kører mellem appen og serveren snarere end mellem appen og VPN'en. VPN'en videresender ciphertext, som den ikke kan dekryptere uden sessionsnøglerne. Derfor afslører en tunnel alene ikke indholdet af en HTTPS-side eller en beskyttet mailsession.
Metadataene omkring ciphertext er en anden historie, og det er her, de fleste selvsikre påstande falder fra hinanden. Destinations-IP, port, pakkestørrelser og timing er alle synlige, plus servernavnet i TLS ClientHello, som normalt sendes i klartekst selv under TLS 1.3. Encrypted Client Hello ændrer det, men det er ikke universelt. Almindelig DNS lækker navne lige så let, når forespørgsler går ud ukrypteret.
Ældre eller fejlkonfigurerede protokoller overdrager mere. Almindelig HTTP, IMAP uden TLS og en række spil- og IoT-protokoller blotlægger deres nyttelast for alt, hvad der har tun-filbeskrivelsen.
Tilladelserne, der aldrig følger med
At godkende en VPN godkender ikke kontakter, SMS, billeder eller mediebiblioteket. Det er separate køretidstilladelser, hver med sin egen dialog og sin egen tilbagekaldelsesvej på appens indstillingsside. En VPN-klient, der vil have din opkaldslog, må bede om den som enhver anden app, og du kan afslå og beholde tunnelen.
Installation af certifikater er den, man skal holde øje med, fordi den ligner en del af VPN-opsætningen og ikke er det. Installation af en bruger-CA i legitimationslageret ændrer, hvilke certifikater Android accepterer, og siden Android 7.0 ignorerer en app, der retter sig mod API 24 eller nyere, bruger-tilføjede CA'er, medmindre dens netværkssikkerhedskonfiguration tilvælger dem med et bruger-tillidsanker. En klient, der insisterer på en CA, kan udføre lovlig virksomhedsaflytning, eller den kan bede om noget, som VPN-dialogen aldrig nævnte.
Adgang via tilgængelighed ligger endnu længere ude. En tjeneste med tilgængelighed aktiveret kan læse skærmindholdet i andre apps, hvilket ingen position på pakkeniveau giver.
Lokalt filter eller ekstern gateway
Den samme API dækker to produkter, der fortjener forskellige niveauer af tillid. En firewall eller annonceblokering på enheden tager tun-filbeskrivelsen og besvarer trafikken lokalt uden nogensinde at sende den til en server, den selv driver. En rigtig tunnel videresender de pakker til en gateway et andet sted, og den operatør ser de samme metadata fra den anden ende og bestemmer samtidig, hvad der kommer tilbage.
En praktisk måde at skelne dem er at tjekke din offentlige adresse med VPN'en tændt og slukket og se, om notifikationen nævner et eksternt endepunkt. Hvis adressen aldrig ændrer sig, løber trafikken sandsynligvis i ring på selve enheden.
Begge tilfælde er stadig en pakkeposition. Forskellen er, hvem der ellers står ved udgangen.
Gennemgå, hvad du godkendte
Åbn Indstillinger, derefter Netværk og internet, derefter VPN, og læs posten i stedet for ikonet i statuslinjen. Always-on VPN og Bloker forbindelser uden VPN er enhedsindstillinger, der holder interfacet i live og skærer lækager væk; de udvider intet. Fra samme skærm kan du glemme profilen og tilbagekalde tilladelsen.
Gå derefter de andre tilladelser igennem. Appinfo viser, hvilke køretidstilladelser klienten har, og sikkerhedsindstillingerne viser, om der samtidig blev installeret et brugercertifikat. Begge kan fjernes uafhængigt.
Spørgsmålet, der er værd at besvare, er snævert: hvilke pakker kommer ind i denne tjeneste, hvor går de hen, og hvad beholder implementeringen. Alt andet i dialogen er støj. VpnService-referencen er den autoritative liste over, hvad interfacet blotlægger.