Jūs pieskaraties VPN apstiprinājuma pogai, un dialogs nereaģē. Dabiskais secinājums ir tāds, ka VPN lietotne vai serveris ir bojāts, tāpēc cilvēki atiestata paroles, maina DNS vai pārinstalē klientu. Parasti nekas no tā neaizskar kļūmi, jo Android atmet pieskārienus, kas nāk caur šķērsli, un VPN apstiprinājuma ekrāns ir tieši tāda veida jutīga piekrišanas uzvedne, uz kuru attiecas šī aizsardzība. Pieskāriens nekad nenonāk līdz pogai.

Ko aizsardzība patiesībā noraida

Android aizsargā jutīgu mijiedarbību pret tapjacking, kad cits logs atrodas virs dialoga un vai nu nolaupa pieskārienu, vai padara to neviennozīmīgu. Skats tam pievienojas ar View.setFilterTouchesWhenObscured, un notikums pienāk ar MotionEvent.FLAG_WINDOW_IS_OBSCURED, kad cits logs ir atzīmēts kā daļēji vai pilnībā to aizsedzošs. Kad tas notiek, notikums tiek izmests, nevis piegādāts nepareizajā vietā. Android 12 (API 31) paplašināja šo pašu aizsardzību ar neuzticamu pieskārienu bloķēšanu sistēmas piekrišanas virsmās, tāpēc apstiprinājuma dialogs var atteikt pieskārienu no pārklājuma, ko citas lietotnes joprojām pieņemtu.

Trīs lietas parasti rada šķērsli: lietotne, kurai ir atļauja rādīt virs citām lietotnēm, pieejamības pakalpojums, kas zīmē saturu, un peldošs logrīks no ekrāna ierakstītāja vai filtra rīka. Dažas ražotāja displeja funkcijas pievieno arī savu slāni, tāpēc viens un tas pats dialogs var uzvesties atšķirīgi divos telefonos ar vienu un to pašu Android versiju. Daļēji aizsedzošs logs iestata FLAG_WINDOW_IS_PARTIALLY_OBSCURED, un pieskāriens tiek izmests, pirms poga to vispār ierauga. Tā ir ekrāna īpašība, nevis tīkla. Brīdī, kad pieskāriens tiek atmests, uz VPN serveri nekas nav nosūtīts, tāpēc nekādas servera puses izmaiņas nevar ietekmēt iznākumu.

Atšķiriet nedzīvu pieskārienu no neizdevušās savienošanās

Šī atšķirība ir visa diagnostika, un tā aizņem desmit sekundes. Ja pieskāriens tiek ignorēts un dialogs paliek tieši tāds pats, šķērslis ir vietējs. Ja dialogs aizveras un pēc tam parādās kļūda, piekrišana tika pieņemta, un jūs esat pārgājis uz citu posmu, kuram nepieciešama pašas VPN lietotnes notikumu informācija.

Vietējo skaidrojumu varat apstiprināt, pārbaudot, vai pieprasītāja lietotne vispār mēģināja savienojumu. Klients, kas nekad nefiksē rokasspiediena mēģinājumu, kamēr ekrānā ir piekrišanas dialogs, nav sasniedzis tīklu.

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

Uzskaitiet, kam ir pārklājuma atļauja un kuri pieejamības pakalpojumi ir iespējoti, pēc tam salīdziniet to ar to, kas darbojas. Neatspējojiet pašu platformas aizsardzību; tieši tā neļauj slēptam logam atbildēt uz piekrišanas uzvedni jūsu vietā.

Noņemiet šķērsli un pēc tam atkārtojiet parasto plūsmu

Vispirms nosakiet lietotni, kas pieprasīja VPN apstiprinājumu, lai zinātu, kādu piekrišanu jūs piešķirat. Pēc tam apturiet konkrēto pārklājumu ar tā paša iestatījumu, nevis atsaucot plašu atļauju, kas jums var būt nepieciešama vēlāk. Ekrāna filtram parasti ir slēdzis savā lietotnē; peldošam logrīkam ir aizvēršanas vadība; ražotāja displeja režīmam ir slēdzis Displeja iestatījumos.

Pēc tam atgriezieties VPN lietotnē un vēlreiz pieprasiet apstiprinājumu, lai dialogs tiktu izveidots no jauna. Ja pieskāriens tagad darbojas, pielāgojiet pārklājuma saderības uzvedību vai atstājiet to izslēgtu, kamēr savienojaties, un saglabājiet ieslēgtu pieskāriena aizsardzību.

Ja nevarat noteikt, kurš logs ir atbildīgs, noņemiet tos pa vienam un pēc katras izmaiņas atkārtojiet piekrišanas dialogu. Ierakstītāja vadības josla vai peldošā īsceļa ikona parasti ir vaininieks, un tas, kuru noņēmāt tieši pirms tā sāka darboties, ir atbilde.

Atjaunojiet visu nesaistīto, ko izslēdzāt pa ceļam. Ekrāna filtrs vai nakts režīms nav ienaidnieks; ienaidnieks ir konkrētais logs, kas pārklājas ar dialogu.

Ko nedrīkst darīt, lai apietu dialogu

Nepiešķiriet pieejamības piekļuvi nepazīstamai lietotnei, lai tā varētu nospiest pogu, un neinstalējiet tam palīglietotni. Tās piešķir tieši to iespēju, kuru aizsardzība cenšas liegt, ekrānā, kas autorizē VPN.

Neautomatizējiet dialogu arī ar ievades rīku. Tas dod tādu pašu rezultātu kā ļaunprātīgs pārklājums un neiemāca neko par cēloni.

Pārvaldītā ierīcē politika, kas ierobežo VPN izmaiņas, ir administratora lēmums. Pārklājuma eksperiments nav atļauja to apiet. Tāpat nereaģējoša piekrišanas poga nav iemesls vājināt sertifikātu pārbaudi vai mainīt konta akreditācijas datus: neviens iestatījums nenovērš vietējo pieskāriena šķērsli.

Ja joprojām neizdodas, ziņojiet par precīzu uzvedību

Aprakstiet dialogu, nevis secinājumu: kura lietotne pieprasīja apstiprinājumu, vai dialogs palika atvērts vai aizvērās, vai citas jutīgas uzvednes, piemēram, nezināmu avotu vai pieejamības brīdinājumi, arī ignorē pieskārienus, ierīces modeli un Android versiju, kā arī pārklājumu un pieejamības sarakstus, kurus uzņēmāt.

Uzdodiet atbalsta īpašniekam vēl vienu jautājumu, kamēr esat tur: vai ierīces politika vispār ierobežo VPN konfigurācijas izmaiņas. Pārvaldīts bloķējums izskatās citādi nekā ignorēts pieskāriens, un zināšana, ar kuru jūs saskaraties, ietaupa otru piegājienu.

Šis kopums atšķir aizsegta pieskāriena problēmu no bojātas ievadierīces, iesaluša dialoga vai politikas bloķējuma. Tas arī pasaka nākamajam cilvēkam, vai skatīties uz ekrānu vai uz tīklu.

Android tapjacking norādījumi aptver aizsegto logu nosacījumus un API, kas ir aiz šīs uzvedības. Ja vēlaties pierādījumu pēdas, meklējiet FLAG_WINDOW_IS_OBSCURED un FLAG_WINDOW_IS_PARTIALLY_OBSCURED notikumā, kas nekad nenonāca līdz pogai. Dialogs, kas paliek atvērts, ir tas, ko jāuzņem, jo tas parāda, ka pieskāriens tika aizturēts, nevis piegādāts citam logam.

Saistītie raksti