Dva Android dijaloga se stalno mešaju: upit za pristanak na VPN i zahtevi za dozvolama koje aplikacija traži za vaše podatke. Prvi predaje mrežnu poziciju, mesto gde paketi mogu da se čitaju i prepisuju. Drugi predaje sačuvani sadržaj koji Android čuva aplikaciju po aplikaciju. Ako ih tretirate kao jednu stvar, ili preuveličavate šta tunel može da vidi, ili ozbiljno potcenjujete šta će odlučna aplikacija tražiti sledeće.

Šta dijalog za pristanak zapravo predaje

Aplikacija koja implementira VpnService i deklariše BIND_VPN_SERVICE traži od sistema da postane VPN uređaja. Nakon odobrenja okvir pravi tun interfejs i daje aplikaciji datotečni deskriptor za njega. Sve što aplikacija posle radi prolazi kroz taj deskriptor: čita IP pakete napolje, odlučuje šta će s njima i upisuje pakete nazad unutra.

Obim tog interfejsa je eksplicitan. Rute odlučuju koja odredišta se hvataju, a addAllowedApplication ili addDisallowedApplication odlučuje koje ga aplikacije hrane. VPN po aplikaciji koji navodi dve aplikacije ne vidi ostatak uređaja.

To je dozvola na nivou paketa, ne na nivou podataka. Servis vidi bajtove koje aplikacija predaje mrežnom steku, adresirane na odredište. Ne dobija pristup privatnom skladištu aplikacije koja šalje, njenim datotekama baze podataka ni njenoj dešifrovanoj memoriji. Datoteke koje aplikacija sačuva u sopstvenom sandboxu ostaju jednako teške za čitanje kao i pre.

Gde se pogled na pakete zaustavlja

TLS i dalje radi svoj posao unutar tunela, jer rukovanje teče između aplikacije i servera, a ne između aplikacije i VPN-a. VPN prosleđuje šifrovani tekst koji ne može da dešifruje bez sesijskih ključeva. Zato tunel sam po sebi ne otkriva sadržaj HTTPS stranice ili zaštićene mejl sesije.

Metapodaci oko šifrovanog teksta su druga priča i tu se većina samouverenih tvrdnji raspada. Odredišni IP, port, veličine paketa i vreme sve su vidljivi, plus ime servera u TLS ClientHello, koje se obično šalje otvoreno čak i pod TLS 1.3. Encrypted Client Hello to menja, ali nije univerzalno. Obični DNS jednako lako odaje imena kada upiti izlaze nešifrovani.

Stariji ili loše konfigurisani protokoli predaju više. Obični HTTP, IMAP bez TLS-a i niz igračkih i IoT protokola izlažu svoj teret svemu što drži tun deskriptor.

Dozvole koje nikada ne dolaze s tim

Odobravanje VPN-a ne odobrava kontakte, SMS, fotografije ni medijsko skladište. To su odvojene dozvole u vreme izvršavanja, svaka sa svojim dijalogom i svojim putem opoziva na stranici podešavanja aplikacije. VPN klijent koji želi vaš dnevnik poziva mora ga tražiti kao i svaka druga aplikacija, a vi možete odbiti i zadržati tunel.

Instalacija sertifikata je ona na koju treba paziti, jer izgleda kao deo VPN podešavanja, a nije. Instalacija korisničkog CA u skladište akreditiva menja koje će sertifikate Android prihvatiti, a od Androida 7.0 aplikacija koja cilja API 24 ili noviji zanemaruje korisnički dodate CA osim ako se njena mrežna bezbednosna konfiguracija uključi s korisničkim sidrom poverenja. Klijent koji insistira na CA možda radi legitimno korporativno presretanje, a možda traži nešto što dijalog VPN-a nikada nije spomenuo.

Pristup pristupačnosti stoji još dalje. Servis sa uključenom pristupačnošću može da čita sadržaj ekrana drugih aplikacija, što nikakva pozicija na nivou paketa ne daje.

Lokalni filter ili udaljeni gejtvej

Isti API pokriva dva proizvoda koja zaslužuju različite nivoe poverenja. Sistemski firewall ili blokator reklama na uređaju uzima tun deskriptor i odgovara na saobraćaj lokalno, nikada ga ne šaljući serveru kojim upravlja. Pravi tunel prosleđuje te pakete gejtveju negde drugde, a taj operater vidi iste metapodatke s druge strane i pritom odlučuje šta se vraća.

Praktičan način da ih razlikujete je da proverite svoju javnu adresu sa uključenim i isključenim VPN-om i da pogledate da li obaveštenje navodi udaljenu krajnju tačku. Ako se adresa nikada ne menja, saobraćaj se verovatno vrti unutar uređaja.

Oba slučaja su i dalje pozicija na nivou paketa. Razlika je ko još stoji na izlazu.

Proverite šta ste odobrili

Otvorite Podešavanja, zatim Mreža i internet, zatim VPN, i čitajte stavku, a ne ikonu u statusnoj traci. VPN uvek uključen i Blokiraj veze bez VPN-a su podešavanja uređaja koja drže interfejs živim i presecaju curenja; ona ništa ne proširuju. Sa istog ekrana možete zaboraviti profil i opozvati dozvolu.

Zatim prođite kroz ostale dozvole. Informacije o aplikaciji pokazuju koje dozvole u vreme izvršavanja klijent ima, a bezbednosna podešavanja pokazuju da li je istovremeno instaliran korisnički sertifikat. Bilo koja od njih može se ukloniti nezavisno.

Pitanje na koje vredi odgovoriti usko je: koji paketi ulaze u ovaj servis, kuda idu i šta implementacija zadržava. Sve ostalo u dijalogu je šum. Referenca za VpnService autoritativna je lista onoga što interfejs izlaže.

Povezani članci