Du trykker på VPN-godkjenningen og dialogen reagerer ikke. Den naturlige konklusjonen er at VPN-appen eller serveren er ødelagt, så folk tilbakestiller passord, bytter DNS eller installerer klienten på nytt. Vanligvis er det ingenting av dette som berører feilen, fordi Android forkaster berøringer som kommer gjennom en hindring, og VPN-godkjenningsskjermen er nettopp den typen sensitive samtykkeprompt som får den beskyttelsen. Trykket når aldri frem til knappen.

Hva beskyttelsen faktisk avviser

Android beskytter sensitive interaksjoner mot tapjacking, der et annet vindu ligger oppå en dialog og enten stjeler trykket eller gjør det tvetydig. En view melder seg på med View.setFilterTouchesWhenObscured, og hendelsen kommer med MotionEvent.FLAG_WINDOW_IS_OBSCURED når et annet vindu er markert som delvis eller fullstendig tilslørende. Når det skjer, blir hendelsen droppet i stedet for å bli levert til feil sted. Android 12 (API 31) utvidet den samme beskyttelsen med blokkering av ubetrodde trykk i systemets samtykkeflater, og derfor kan godkjenningsdialogen avvise et trykk fra et overlegg som andre apper fortsatt ville godta.

Tre ting lager rutinemessig en hindring: en app med tillatelsen til å vise over andre apper, en tilgjengelighetstjeneste som tegner innhold, og en flytende widget fra en skjermopptaker eller et filterverktøy. Enkelte leverandørers skjermfunksjoner legger også til sitt eget lag, og derfor kan den samme dialogen oppføre seg annerledes på to telefoner med samme Android-versjon. Et delvis tilslørende vindu setter FLAG_WINDOW_IS_PARTIALLY_OBSCURED, og trykket blir droppet før knappen i det hele tatt ser det. Dette er en egenskap ved skjermen, ikke ved nettverket. Ingenting er sendt til VPN-serveren i det øyeblikket trykket forkastes, så ingen endring på serversiden kan påvirke utfallet.

Skill et dødt trykk fra en mislykket tilkobling

Denne forskjellen er hele diagnosen, og den tar ti sekunder. Hvis trykket ignoreres og dialogen står nøyaktig som før, er hindringen lokal. Hvis dialogen lukkes og en feil vises etterpå, ble samtykket godtatt, og du har flyttet deg til et annet stadium som trenger VPN-appens egne hendelsesopplysninger.

Du kan bekrefte den lokale lesningen ved å sjekke om appen som ber om det i det hele tatt forsøkte en tilkobling. En klient som aldri logger et håndtrykksforsøk mens en samtykkedialog står på skjermen, har ikke nådd nettverket.

adb shell cmd appops get com.example.vpn SYSTEM_ALERT_WINDOW
adb shell settings get secure enabled_accessibility_services

List opp hva som har overleggstillatelsen og hvilke tilgjengelighetstjenester som er slått på, og sammenlign det med det som kjører. Ikke slå av selve plattformbeskyttelsen; det er den som hindrer et skjult vindu i å svare på en samtykkeprompt på dine vegne.

Fjern hindringen, og prøv deretter den vanlige flyten på nytt

Identifiser først appen som ba om VPN-godkjenning, slik at du vet hvilket samtykke du gir. Stopp deretter det aktuelle overlegget gjennom sin egen innstilling i stedet for å trekke tilbake en bred tillatelse du kan trenge senere. Et skjermfilter har vanligvis en bryter i sin egen app; en flytende widget har en lukkekontroll; en leverandørskjermmodus har en bryter i Skjerminnstillinger.

Gå tilbake til VPN-appen etter det og be om godkjenning igjen, slik at dialogen opprettes på nytt. Hvis trykket nå virker, juster overleggets kompatibilitetsoppførsel eller la det være av mens du kobler til, og hold berøringsbeskyttelsen på.

Hvis du ikke kan avgjøre hvilket vindu som er ansvarlig, fjern dem ett om gangen og prøv samtykkedialogen på nytt etter hver endring. En opptakerkontrollinje eller en flytende snarvei er den vanlige synderen, og det du fjernet rett før det virket, er svaret.

Gjenopprett alt urelatert du slo av underveis. Et skjermfilter eller en nattmodus er ikke fienden; det aktuelle vinduet som overlapper dialogen er det.

Hva du ikke bør gjøre for å komme forbi dialogen

Ikke gi tilgjengelighetstilgang til en ukjent app slik at den kan trykke på knappen, og ikke installer en hjelpeapp for det formålet. De gir nøyaktig den egenskapen beskyttelsen finnes for å nekte, på en skjerm som autoriserer VPN.

Ikke automatiser dialogen med et inndataverktøy heller. Det gir samme resultat som et ondsinnet overlegg og lærer deg ingenting om årsaken.

På en administrert enhet er en policy som begrenser VPN-endringer administratorers beslutning. Et overleggseksperiment er ikke tillatelse til å omgå den. På samme måte er en samtykkeknapp som ikke reagerer ingen grunn til å svekke sertifikatverifiseringen eller endre kontopåloggingsinformasjon: ingen av innstillingene fjerner en lokal berøringshindring.

Hvis det fortsatt feiler, rapporter den nøyaktige oppførselen

Beskriv dialogen i stedet for konklusjonen: hvilken app som ba om godkjenning, om dialogen forble åpen eller ble lukket, om andre sensitive prompter som advarslene om ukjente kilder eller tilgjengelighet også ignorerer trykk, enhetsmodell og Android-versjon, og overleggs- og tilgjengelighetslistene du fanget.

Spør støtteansvarlig om ett spørsmål til mens du er der: om enhetspolicyen i det hele tatt begrenser endringer i VPN-konfigurasjonen. En administrert blokkering ser annerledes ut enn et ignorert trykk, og å vite hvilken du ser på sparer en andre runde.

Dette settet skiller et tilslørt berøringsproblem fra en ødelagt inndataenhet, en frosset dialog eller en policyblokkering. Det forteller også neste person om de skal se på skjermen eller på nettverket.

Androids veiledning om tapjacking dekker betingelsene for tilslørte vinduer og API-ene bak denne oppførselen. Hvis du vil ha spor av bevis, se etter FLAG_WINDOW_IS_OBSCURED og FLAG_WINDOW_IS_PARTIALLY_OBSCURED på hendelsen som aldri nådde knappen. Dialogen som blir stående åpen er det du bør fange, fordi den viser at trykket ble holdt tilbake i stedet for levert til et annet vindu.

Relaterte artikler