Root ass net dat, wat engem Android-VPN-App erlaabt, Traffic ze droen, Lecken ze blockéieren oder en Neistart z'iwwerliewen. D'Leit faassen dat alles als „d'App huet VPN-Permissioun“ zesummen, wat dräi getrennte Mechanismen verstoppt: eng Zoustëmmung vum Benotzer, eng Pakett-Interface, déi de System opbaut, an eng Blockéierpoulitik vun der Plattform, déi net d'App ze definéieren huet. En Android-VPN-Design iwwerpréiwen heescht ze froen, op wéi eng vun den dräi eng Behauptung wierklech baséiert, well jiddwereng en aneren Propriétaire an en anere Feelmode huet.

D'Zoustëmmung kënnt duerch eng Systemaktivitéit

VpnService.prepare() gëtt näischt. Et gëtt en Intent un d'Systemzoustëmmungsaktivitéit zréck, wann d'Zoustëmmung feelt, an d'App start deen Dialog, sou datt de Benotzer de Service ka geneemegen. Dem App säin eegene Prozess starten, eng Permissioun am Manifest dobäisetzen oder en eegene „VPN aktivéieren“-Écran weisen schaaft d'Permissioun net.

D'Permissioun ass och begrenzt. Si gehéiert zu engem Pak an engem Benotzerprofil, also sinn d'perséinlech Kopie an d'Aarbechtskopie getrennt Entscheedungen, an de Propriétaire vum Gerät kann e verwaltete Profil anescht virbereeden wéi en perséinlechen. Wann den Dialog ni erschéngt an prepare() null zréckgëtt, existéiert d'Zoustëmmung scho fir dee Pak an deem Profil; dat ass kee Beweis, datt d'App vertrauenswürdeg ass, just datt d'Permissioun do ass.

D'Interface ass eng Ufro, déi de System erfëllt

No der Zoustëmmung beschreift d'App mat VpnService.Builder, wat se wëll: Adressen, Routen, DNS-Serveren, MTU an, wou ënnerstëtzt, d'Appen, déi solle mat abegraff oder ausgeschloss ginn. establish() freet de System, d'Tunnel-Interface ze schafen an den entspriechende Traffic dohinner ze leeden. De System huet d'Routingsentscheidung; d'App kritt den Dateideskriptor a muss dann eppes Nëtzleches mat de Pakete maachen.

What you observeWho actually owns it
VPN consent dialogThe system, triggered by prepare()
Routes, DNS and app listsThe app requests them; the system applies them
One active VPN per profileThe platform; a new service replaces the old one
Always-on and block-without-VPNDevice policy enforced by the platform

Dee Tableau ass d'Architektur op engem Fleck. D'App bedeelegt sech un der Pakettbehandlung; si huet weder d'Interface, den Routentableau nach d'Zuel vun de Servicer, déi dierfe lafen.

Den Tunnelssocket muss aus sengem eegenen Tunnel entkommen

D'Verbindung, déi den verschlësselten Traffic dréit, ass selwer e Socket. Wann en zréck an d'Interface geleet gëtt, déi d'App just geschaaf huet, hänkt den Tunnel vum Tunnel of a stockt. VpnService.protect() bënnt dee Socket un dat ënnerleeënd Netzwierk, sou datt en d'Erfaassung ëmgeet, an dofir schützt e korrekte Client säin äussere Socket virum éischten Handshake.

adb shell dumpsys connectivity | grep -i -A5 vpn
adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown

Dës Kommandoen weisen dat installéiert VPN-Netzwierk, de Pak fir ëmmer-unn an ob d'Sperr gesat ass. Et sinn nëmme Liesbeobachtungen: wann d'Wäerter net mat deem iwwerenee stëmmen, wat den Design behaapt, geet d'Behauptung iwwer d'Interface vun der App an net iwwer den Zoustand vum System.

D'Blockéiere kann der Plattform gehéieren

Android dokumentéiert eng Politk, déi Verbindungen blockéiert, déi den VPN net benotzen. Dee Vollzuch ass e Plattformskontrakt, net eng App, déi Verbindungen an enger Schleif erëm probéiert. De Schalter ass an den VPN-Astellungen vum Gerät als Verbindungen ouni VPN blockéieren, an op engem verwaltete Gerät kann den Propriétaire en fir de ganze Profil aschalten. Den Ënnerscheed zielt, wann Dir eng Marketingbehauptung bewäert: e Client kann en Schlass-Ikon weisen an aggressiv erëm verbannen, während direkten Traffic nach ëmmer méiglech ass, oder déi ofgedeckt Appen kënnen offline bleiwen, well de System d'Sperr duerchsetzt.

D'Schlass-Ikon zeechent d'App, also beweist se nëmmen, datt d'App mengt, si wier verbonnen. Ob eng aner App hire Netzwierkzougang verléiert, entscheet d'Plattform, also ass déi nëtzlech Kontroll, déi App ze gesinn, déi feelt, während den Tunnel un ass.

Och den „ëmmer un“-Label aus dem App-Store ersetzt dee Kontrakt net. Ëmmer-unn a Sperr sinn Gerätsastellungen, déi dacks vum Propriétaire ugewannt ginn, an hire Verhalen fir ausgeschlossenen Appen definéiert d'Plattform. Liest d'Astellung, net de Badge.

Véier Froen fir eng Designiwwerpréiwung

Éischtens, wien huet zougestëmmt: wéi ee Pak, wéi ee Profil, an war et de Benotzer oder eng Politk fir verwaltete Geräter? Zweetens, wat huet d'App ugefrot: wéi eng Routen, wéi eng Adressfamilljen, wéi eng Appen abegraff oder ausgeschloss? Drëttens, wat geschitt, wann den Tunnel net disponibel ass: blockéiert de System, oder fale sech den Traffic op dat ënnerleeënd Netzwierk zréck? Véiertens, wat mécht d'App mat de Pakete, déi se kritt?

Déi véiert Fro ass déi, déi de Permissiounsmodell net beäntwerten kann. D'Zoustëmmung an eng TUN-Interface beweisen, datt d'App Traffic ka kréien, net datt se en verschlësselt, e Géigespiller authentifizéiert oder sech propper erhëlt. Dat sinn Implementéierungseigenschaften, an do verbréngt eng éierlech Iwwerpréiwung hir Zäit.

Eng onnéideg Root-Ufro gëtt net legitim, andeem een d'Resultat Kill Switch nennt, an en Zoustëmmungsdialog ass keen Sécherheetsaudit. Hält déi dräi Permissiounen getrennt an all Behauptung gëtt iwwerpréifbar.

Ähnlech Artikelen