Android ignora il tocco di approvazione VPN? Controlla prima la sovrapposizione
Un pulsante di approvazione che non accetta il tocco è di solito un ostacolo locale sullo schermo, non un guasto del server o dell’account. Rimuovi la sovrapposizione e conserva la protezione.
Tocchi il pulsante di approvazione VPN e la finestra non reagisce. La conclusione naturale è che l’applicazione o il server siano rotti, così le persone reimpostano le password, cambiano il DNS o reinstallano il client. Di solito nulla di questo tocca il guasto, perché Android scarta i tocchi che arrivano attraverso un ostacolo, e la schermata di approvazione VPN è proprio quel tipo di finestra di consenso sensibile. Il tocco non raggiunge mai il pulsante.
Cosa rifiuta davvero la protezione
Android protegge le interazioni sensibili dal tapjacking, in cui un’altra finestra si sovrappone alla finestra di dialogo e ruba il tocco o lo rende ambiguo. Una vista partecipa con View.setFilterTouchesWhenObscured, e l’evento arriva con MotionEvent.FLAG_WINDOW_IS_OBSCURED quando un’altra finestra è contrassegnata come parzialmente o completamente oscurante. Allora l’evento viene scartato invece di essere consegnato al posto sbagliato. Android 12 (API 31) ha esteso la stessa protezione con il blocco dei tocchi non affidabili nelle superfici di consenso di sistema, ed è per questo che la finestra di approvazione può rifiutare un tocco proveniente da una sovrapposizione che altre applicazioni accetterebbero ancora.
Tre cose producono regolarmente un ostacolo: un’applicazione con il permesso di mostrarsi sopra le altre, un servizio di accessibilità che disegna contenuti e un widget flottante di un registratore di schermo o di uno strumento di filtro. Alcune funzioni di visualizzazione del produttore aggiungono un proprio livello, ed è per questo che la stessa finestra può comportarsi diversamente su due telefoni con la stessa versione di Android. Una finestra che oscura parzialmente imposta FLAG_WINDOW_IS_PARTIALLY_OBSCURED, e il tocco viene scartato prima che il pulsante lo veda. È una proprietà dello schermo, non della rete. Nulla è stato inviato al server VPN nel momento in cui il tocco viene scartato, quindi nessuna modifica lato server può influenzare l’esito.
Separa un tocco morto da una connessione fallita
La distinzione è tutta la diagnosi e richiede dieci secondi. Se il tocco viene ignorato e la finestra resta esattamente com’era, l’ostacolo è locale. Se la finestra si chiude e poi compare un errore, il consenso è stato accettato e sei passato a un’altra fase che richiede le informazioni sugli eventi dell’applicazione.
Puoi confermare la lettura locale verificando se l’applicazione richiedente ha persino tentato una connessione. Un client che non registra mai un tentativo di handshake mentre la finestra di consenso è sullo schermo non ha raggiunto la rete.
adb shell cmd appops get com.example.vpn SYSTEM_ALERT_WINDOW
adb shell settings get secure enabled_accessibility_servicesElenca chi detiene il permesso di sovrapposizione e quali servizi di accessibilità sono attivi, poi confronta con ciò che è in esecuzione. Non disattivare la protezione della piattaforma stessa; è ciò che impedisce a una finestra nascosta di rispondere al posto tuo a una finestra di consenso.
Rimuovi l’ostacolo, poi riprova il flusso normale
Individua prima quale applicazione ha chiesto l’approvazione VPN, per sapere quale consenso concedi. Poi ferma la sovrapposizione specifica dalla sua impostazione, non revocando un permesso ampio che potresti dover usare più avanti. Un filtro schermo ha di solito un interruttore nella sua applicazione; un widget flottante ha un controllo di chiusura; una modalità di visualizzazione del produttore ha un interruttore nelle impostazioni dello schermo.
Torna poi all’applicazione VPN e chiedi di nuovo l’approvazione, così la finestra viene creata da zero. Se il tocco ora funziona, regola il comportamento di compatibilità della sovrapposizione o lasciala spenta mentre ti connetti, e mantieni attiva la protezione del tocco.
Se non riesci a capire quale finestra è responsabile, rimuovile una alla volta e riprova la finestra di consenso dopo ogni modifica. La barra di controllo di un registratore o una scorciatoia flottante è il colpevole abituale, e quella che hai rimosso appena prima che funzionasse è la risposta.
Ripristina tutto ciò che non è correlato e che hai spento lungo il percorso. Un filtro schermo o una modalità notte non sono il nemico; lo è la finestra specifica che si sovrappone alla finestra di dialogo.
Cosa non fare per superare la finestra
Non concedere l’accessibilità a un’applicazione sconosciuta perché prema il pulsante, e non installare un’applicazione di supporto per farlo. Questo concede esattamente la capacità che la protezione esiste per negare, su uno schermo che autorizza una VPN.
Non automatizzare la finestra con uno strumento di input. Produce lo stesso risultato di una sovrapposizione malevola e non ti insegna nulla sulla causa.
Su un dispositivo gestito, una policy che limita le modifiche VPN è decisione dell’amministratore. Un esperimento con sovrapposizioni non è autorizzazione a aggirarla. Allo stesso modo, un pulsante di consenso che non risponde non è motivo per indebolire la verifica dei certificati o cambiare le credenziali dell’account: nessuna delle due impostazioni elimina un ostacolo locale al tocco.
Se fallisce ancora, segnala il comportamento esatto
Descrivi la finestra, non la conclusione: quale applicazione ha chiesto l’approvazione, se la finestra è rimasta aperta o si è chiusa, se anche altre richieste sensibili come gli avvisi su origini sconosciute o accessibilità ignorano i tocchi, il modello del dispositivo e la versione di Android, e gli elenchi di sovrapposizioni e accessibilità che hai catturato.
Chiedi una cosa in più al responsabile del supporto: se la policy del dispositivo limita del tutto le modifiche alla configurazione VPN. Un blocco gestito appare diverso da un tocco ignorato, e sapere quale hai davanti risparmia un secondo giro.
Quel set distingue un problema di tocco coperto da un dispositivo di input guasto, da una finestra bloccata o da un blocco di policy. Dice anche alla persona successiva se guardare lo schermo o la rete.
La guida Android sul tapjacking copre le condizioni delle finestre coperte e le API dietro questo comportamento. Se vuoi la traccia delle prove, cerca FLAG_WINDOW_IS_OBSCURED e FLAG_WINDOW_IS_PARTIALLY_OBSCURED sull’evento che non ha mai raggiunto il pulsante. La finestra che resta aperta è ciò che va catturato, perché mostra che il tocco è stato trattenuto e non consegnato a un’altra finestra.