Додирнете дугме за одобрење VPN-а и дијалог не реагује. Природан закључак је да је VPN апликација или сервер покварен, па људи ресетују лозинке, мењају DNS или поново инсталирају клијент. Обично ништа од тога не дира квар, јер Android одбацује додире који долазе кроз препреку, а екран за одобрење VPN-а је управо такав осетљив захтев за пристанак који добија ту заштиту. Додир никада не стиже до дугмета.

Шта заштита заправо одбија

Android штити осетљиве интеракције од tapjacking-а, када други прозор стоји изнад дијалога и или украде додир или га учини двосмисленим. Приказ се укључује помоћу View.setFilterTouchesWhenObscured, а догађај стиже носећи MotionEvent.FLAG_WINDOW_IS_OBSCURED када је други прозор означен као делимично или потпуно заклањајући. Када се то догоди, догађај се одбацује уместо да буде достављен на погрешно место. Android 12 (API 31) проширио је исту заштиту блокирањем неповерљивих додира у системским површинама за пристанак, због чега дијалог за одобрење може одбити додир из оверлеја који би друге апликације још прихватиле.

Три ствари рутински стварају препреку: апликација која има дозволу за приказивање изнад других апликација, сервис за приступачност који црта садржај и плутајући виџет снимача екрана или алата за филтрирање. Неке функције екрана произвођача додају и сопствени слој, због чега се исти дијалог може понашати различито на два телефона са истом верзијом Android-а. Прозор који делимично заклања поставља FLAG_WINDOW_IS_PARTIALLY_OBSCURED, а додир се одбацује пре него што га дугме уопште види. То је својство екрана, а не мреже. У тренутку када се додир одбаци, на VPN сервер није послато ништа, па никаква промена на страни сервера не може утицати на исход.

Одвојите мртав додир од неуспешне везе

Та разлика је цела дијагноза и траје десет секунди. Ако се додир игнорише и дијалог остане тачно какав је био, препрека је локална. Ако се дијалог затвори и после се појави грешка, пристанак је прихваћен и прешли сте у другу фазу којој требају сопствене информације о догађајима VPN апликације.

Локално читање можете потврдити провером да ли је апликација која тражи уопште покушала везу. Клијент који никада не забележи покушај руковања док је дијалог за пристанак на екрану није стигао до мреже.

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

Попишите ко има дозволу за оверлеј и који су сервиси за приступачност укључени, па их упоредите са оним што ради. Не искључујте саму заштиту платформе; она је оно што спречава скривени прозор да одговори на захтев за пристанак у ваше име.

Уклоните препреку, па поновите уобичајени ток

Прво идентификујте апликацију која је затражила одобрење VPN-а, да знате који пристанак дајете. Затим зауставите конкретни оверлеј кроз његово сопствено подешавање, уместо да опозовете широку дозволу која вам може требати касније. Филтер екрана обично има прекидач у својој апликацији; плутајући виџет има контролу за затварање; режим екрана произвођача има прекидач у подешавањима екрана.

Након тога се вратите у VPN апликацију и поново затражите одобрење, да се дијалог створи изнова. Ако додир сада ради, прилагодите понашање компатибилности оверлеја или га оставите искљученим док се повезујете, и задржите заштиту додира укљученом.

Ако не можете да утврдите који је прозор одговоран, уклањајте их један по један и понављајте дијалог за пристанак после сваке промене. Контролна трака снимача или плутајућа пречица обично је кривац, а оно што сте уклонили непосредно пре него што је прорадило јесте одговор.

Вратите све неповезано што сте искључили успут. Филтер екрана или ноћни режим није непријатељ; непријатељ је конкретни прозор који се преклапа са дијалогом.

Шта не треба радити да бисте прошли дијалог

Не дајте приступачност непознатој апликацији да би могла да притисне дугме и не инсталирајте помоћну апликацију у ту сврху. Оне дају управо ону могућност коју заштита постоји да ускрати, на екрану који одобрава VPN.

Не аутоматизујте дијалог ни алатом за унос. То даје исти резултат као злонамерни оверлеј и не учи вас ничему о узроку.

На управљаном уређају, политика која ограничава промене VPN-а одлука је администратора. Експеримент са оверлејом није овлашћење да је заобиђете. Исто тако, дугме за пристанак које не реагује није разлог да ослабите проверу сертификата или промените акредитиве налога: ниједно подешавање не уклања локалну препреку за додир.

Ако и даље не успе, пријавите тачно понашање

Опишите дијалог, а не закључак: која је апликација затражила одобрење, да ли је дијалог остао отворен или се затворио, игноришу ли додире и други осетљиви захтеви попут упозорења о непознатим изворима или приступачности, модел уређаја и верзију Android-а, те листе оверлеја и приступачности које сте снимили.

Питајте власника подршке још једно питање док сте тамо: ограничава ли политика уређаја промене VPN конфигурације уопште. Управљана блокада изгледа другачије од игнорисаног додира, а знање с којим имате посла штеди други круг.

Тај скуп разликује проблем заклоњеног додира од поквареног улазног уређаја, замрзнутог дијалога или блокаде политиком. Такође говори следећој особи да ли да гледа у екран или у мрежу.

Android смернице о tapjacking-у покривају услове заклоњених прозора и API-је иза овог понашања. Ако желите траг доказа, тражите FLAG_WINDOW_IS_OBSCURED и FLAG_WINDOW_IS_PARTIALLY_OBSCURED на догађају који никада није стигао до дугмета. Дијалог који остаје отворен је оно што треба снимити, јер показује да је додир задржан, а не достављен другом прозору.

Повезани чланци