Dva Android dijaloga se stalno miješaju: upit za pristanak na VPN i zahtjevi za dozvolama koje aplikacija traži za vaše podatke. Prvi predaje mrežnu poziciju, mjesto na kojem se paketi mogu čitati i prepisivati. Drugi predaje pohranjeni sadržaj koji Android čuva aplikaciju po aplikaciju. Ako ih tretirate kao jednu stvar, ili preuveličavate šta tunel može vidjeti, ili ozbiljno podcjenjujete šta će odlučna aplikacija tražiti sljedeć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 stvara tun interfejs i daje aplikaciji datotečni deskriptor za njega. Sve što aplikacija nakon toga radi prolazi kroz taj deskriptor: čita IP pakete iz njega, odlučuje šta će s njima i upisuje pakete natrag.

Obim tog interfejsa je eksplicitan. Rute odlučuju koja odredišta se hvataju, a addAllowedApplication ili addDisallowedApplication odlučuje koje aplikacije ga hrane. VPN po aplikaciji koji navodi dvije 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 vlastitom sandboxu ostaju jednako teške za čitanje kao i prije.

Gdje 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 prosljeđuje šifrirani tekst koji ne može dešifrovati bez sesijskih ključeva. Zato tunel sam po sebi ne otkriva sadržaj HTTPS stranice ili zaštićene mail sesije.

Metapodaci oko šifriranog teksta su druga priča i tu se većina samouvjerenih tvrdnji raspada. Odredišni IP, port, veličine paketa i vrijeme 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 mijenja, 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 medijsku pohranu. To su odvojene dozvole u vrijeme izvršavanja, svaka sa svojim dijalogom i svojim putem opoziva na stranici postavki 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 certifikata je ona na koju treba paziti, jer izgleda kao dio VPN postavljanja, a nije. Instalacija korisničkog CA u skladište akreditiva mijenja koje će certifikate Android prihvatiti, a od Android 7.0 aplikacija koja cilja API 24 ili noviji zanemaruje korisnički dodane CA osim ako se njena mrežna sigurnosna konfiguracija uključi s korisničkim sidrom povjerenja. 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 čitati sadržaj ekrana drugih aplikacija, što nikakva pozicija na nivou paketa ne daje.

Lokalni filter ili udaljeni gateway

Isti API pokriva dva proizvoda koja zaslužuju različite nivoe povjerenja. Firewall ili blokator oglasa na uređaju uzima tun deskriptor i odgovara na saobraćaj lokalno, nikada ga ne šaljući serveru kojim upravlja. Pravi tunel prosljeđuje te pakete gatewayu negdje drugdje, 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 provjerite svoju javnu adresu s uključenim i isključenim VPN-om i da pogledate navodi li obavještenje udaljenu krajnju tačku. Ako se adresa nikada ne mijenja, saobraćaj se vjerovatno vrti unutar uređaja.

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

Provjerite šta ste odobrili

Otvorite Postavke, zatim Mreža i internet, zatim VPN, i čitajte stavku, a ne ikonu u statusnoj traci. VPN uvijek uključen i Blokiraj veze bez VPN-a su postavke uređaja koje drže interfejs živim i presijecaju curenja; one 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 vrijeme izvršavanja klijent ima, a sigurnosne postavke pokazuju je li istovremeno instaliran korisnički certifikat. Bilo koja od njih može se ukloniti nezavisno.

Pitanje na koje vrijedi odgovoriti je usko: 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