VPN no Android versus permissões de apps: o que o aviso significa
A janela de consentimento de VPN do Android concede uma posição de pacotes, não acesso ao seu e-mail, às fotos ou aos contactos. É aqui que essa fronteira está realmente.
Duas janelas do Android são constantemente confundidas: o pedido de consentimento de VPN e os pedidos de permissão que uma app faz sobre os seus dados. A primeira entrega uma posição de rede, o ponto onde os pacotes podem ser lidos e reescritos. A segunda entrega conteúdo armazenado que o Android protege app a app. Tratá-las como uma única coisa ou exagera o que um túnel pode ver, ou subestima gravemente o que uma app determinada vai pedir a seguir.
O que a janela de consentimento realmente entrega
Uma app que implementa VpnService e declara BIND_VPN_SERVICE pede ao sistema para se tornar a VPN do dispositivo. Após a aprovação, a estrutura cria uma interface tun e entrega à app um descritor de ficheiro para ela. Tudo o que a app faz depois flui através desse descritor: lê pacotes IP para fora, decide o que fazer com eles e escreve pacotes de volta para dentro.
O âmbito dessa interface é explícito. As rotas decidem que destinos são capturados, e addAllowedApplication ou addDisallowedApplication decide que apps a alimentam. Uma VPN por app que lista duas apps não vê o resto do dispositivo.
Isso é uma concessão ao nível do pacote, não ao nível dos dados. O serviço vê os bytes que uma app entrega à pilha de rede, endereçados a um destino. Não obtém acesso ao armazenamento privado da app emissora, aos seus ficheiros de base de dados nem à sua memória desencriptada. Os ficheiros que uma app guardou na sua própria sandbox continuam exatamente tão difíceis de ler como antes.
Onde a visão dos pacotes termina
O TLS continua a fazer o seu trabalho dentro do túnel, porque o aperto de mão ocorre entre a app e o servidor, não entre a app e a VPN. A VPN encaminha texto cifrado que não consegue desencriptar sem as chaves de sessão. É por isso que um túnel sozinho não revela o conteúdo de uma página HTTPS nem de uma sessão de correio protegida.
Os metadados em torno do texto cifrado são outra história, e é aqui que a maioria das afirmações confiantes se desfaz. O IP de destino, a porta, os tamanhos dos pacotes e a temporização são visíveis, além do nome do servidor no TLS ClientHello, que normalmente é enviado em claro mesmo com TLS 1.3. O Encrypted Client Hello muda isso, mas não é universal. O DNS simples também revela nomes com a mesma facilidade quando as consultas saem sem encriptação.
Protocolos mais antigos ou mal configurados entregam mais. HTTP simples, IMAP sem TLS e vários protocolos de jogos e de IoT expõem as suas cargas úteis a tudo o que detenha o descritor tun.
As permissões que nunca vêm com isto
Aprovar uma VPN não aprova contactos, SMS, fotos ou a biblioteca de multimédia. São concessões de execução separadas, cada uma com a sua própria janela e o seu próprio caminho de revogação na página de definições da app. Um cliente VPN que queira o seu registo de chamadas tem de o pedir como qualquer outra app, e pode recusar mantendo o túnel.
A instalação de certificados é a que merece atenção, porque parece parte da configuração da VPN e não é. Instalar uma AC de utilizador no armazenamento de credenciais altera que certificados o Android aceitará, e desde o Android 7.0 uma app destinada à API 24 ou superior ignora as AC adicionadas pelo utilizador, a menos que a sua configuração de segurança de rede as inclua com uma âncora de confiança do utilizador. Um cliente que insiste numa AC pode estar a fazer interceção empresarial legítima, ou pode estar a pedir algo que a janela da VPN nunca mencionou.
O acesso de acessibilidade está ainda mais longe. Um serviço com acessibilidade ativada pode ler o conteúdo do ecrã de outras apps, algo que nenhuma posição ao nível do pacote proporciona.
Filtro local ou gateway remoto
A mesma API cobre dois produtos que merecem níveis de confiança diferentes. Uma firewall ou bloqueador de anúncios no dispositivo pega no descritor tun e responde ao tráfego localmente, sem nunca o enviar para um servidor que ele próprio opera. Um túnel real encaminha esses pacotes para um gateway noutro lugar, e esse operador vê os mesmos metadados do outro lado e decide também o que volta.
Uma forma prática de os distinguir é verificar o seu endereço público com a VPN ligada e desligada, e ver se a notificação nomeia um ponto final remoto. Se o endereço nunca mudar, o tráfego está provavelmente a fazer um ciclo no próprio dispositivo.
Ambos os casos continuam a ser uma posição de pacotes. A diferença é quem mais está na saída.
Audite o que aprovou
Abra Definições, depois Rede e Internet, depois VPN, e leia a entrada em vez do ícone na barra de estado. VPN sempre ativa e Bloquear ligações sem VPN são definições do dispositivo que mantêm a interface viva e cortam fugas; não alargam nada. A partir do mesmo ecrã pode esquecer o perfil e revogar a concessão.
Depois percorra as outras permissões. As informações da app mostram que concessões de execução o cliente detém, e as definições de Segurança mostram se foi instalado ao mesmo tempo um certificado de utilizador. Qualquer uma delas pode ser removida de forma independente.
A pergunta que vale a pena responder é estreita: que pacotes entram neste serviço, para onde vão e o que guarda a implementação. Tudo o resto na janela é ruído. A referência do VpnService é a lista autoritativa do que a interface expõe.