Dous diálogos de Android confúndense constantemente: o aviso de consentimento da VPN e as solicitudes de permisos que unha aplicación fai sobre os teus datos. O primeiro entrega unha posición de rede, o punto onde os paquetes se poden ler e reescribir. O segundo entrega contido almacenado que Android protexe aplicación por aplicación. Tratalos como unha soa cousa ou ben exaxera o que un túnel pode ver, ou ben subestima gravemente o que pedirá despois unha aplicación decidida.

Que entrega realmente o diálogo de consentimento

Unha aplicación que implementa VpnService e declara BIND_VPN_SERVICE pide ao sistema converterse na VPN do dispositivo. Tras a aprobación, o marco de traballo crea unha interface tun e entrega á aplicación un descritor de ficheiro para ela. Todo o que a aplicación fai despois flúe por ese descritor: le paquetes IP cara a fóra, decide que facer con eles e volve escribir paquetes cara a dentro.

O alcance desa interface é explícito. As rutas deciden que destinos se capturan, e addAllowedApplication ou addDisallowedApplication decide que aplicacións a alimentan. Unha VPN por aplicación que lista dúas aplicacións non ve o resto do dispositivo.

Iso é unha concesión a nivel de paquete, non a nivel de datos. O servizo ve os bytes que unha aplicación entrega á pila de rede, dirixidos a un destino. Non obtén ningunha vía de acceso ao almacenamento privado da aplicación emisora, aos seus ficheiros de base de datos nin á súa memoria descifrada. Os ficheiros que unha aplicación gardou dentro do seu propio sandbox seguen exactamente igual de difíciles de ler que antes.

Onde se detén a visión de paquetes

TLS segue facendo o seu traballo dentro do túnel, porque o apretón de mans ocorre entre a aplicación e o servidor, non entre a aplicación e a VPN. A VPN reenvía texto cifrado que non pode descifrar sen as claves de sesión. Por iso un túnel por si só non revela o contido dunha páxina HTTPS nin dunha sesión de correo protexida.

Os metadatos arredor do texto cifrado son outra historia, e aquí é onde se desmoronan a maioría das afirmacións seguras. A IP de destino, o porto, os tamaños de paquete e a temporización son visibles, ademais do nome do servidor no TLS ClientHello, que normalmente se envía en claro mesmo con TLS 1.3. Encrypted Client Hello cambia iso, pero non é universal. O DNS simple filtra nomes coa mesma facilidade cando as consultas saen sen cifrar.

Os protocolos máis antigos ou mal configurados entregan máis. HTTP simple, IMAP sen TLS e varios protocolos de xogos e de IoT expoñen as súas cargas útiles a calquera cousa que teña o descritor tun.

Os permisos que nunca veñen con isto

Aprobar unha VPN non aproba contactos, SMS, fotos nin o almacén multimedia. Son concesións de execución separadas, cada unha co seu propio diálogo e a súa propia ruta de revocación na páxina de axustes da aplicación. Un cliente VPN que queira o teu rexistro de chamadas ten que pedilo como calquera outra aplicación, e podes negarte mantendo o túnel.

A instalación de certificados é a que hai que vixiar, porque parece parte da configuración da VPN e non o é. Instalar unha CA de usuario no almacén de credenciais cambia que certificados aceptará Android, e desde Android 7.0 unha aplicación dirixida á API 24 ou posterior ignora as CA engadidas polo usuario a menos que a súa configuración de seguridade de rede o habilite cunha áncora de confianza de usuario. Un cliente que insiste nunha CA pode estar facendo interceptación empresarial lexítima, ou pode estar pedindo algo que o diálogo da VPN nunca mencionou.

O acceso de accesibilidade está aínda máis fóra. Un servizo coa accesibilidade activada pode ler o contido de pantalla doutras aplicacións, algo que ningunha posición a nivel de paquete proporciona.

Filtro local ou pasarela remota

A mesma API cobre dous produtos que merecen niveis de confianza diferentes. Un cortalumes ou bloqueador de anuncios no dispositivo toma o descritor tun e responde ao tráfico localmente, sen enviarlle nunca a un servidor que el mesmo opera. Un túnel real reenvía eses paquetes a unha pasarela noutro lugar, e ese operador ve os mesmos metadatos desde o outro extremo e ademais decide que volve.

Unha forma práctica de distinguilos é comprobar o teu enderezo público coa VPN activada e desactivada, e mirar se a notificación nomea un punto final remoto. Se o enderezo nunca cambia, o tráfico probablemente está a volver sobre o propio dispositivo.

Ambos os casos seguen sendo unha posición de paquetes. A diferenza é quen máis está na saída.

Audita o que aprobaches

Abre Axustes, logo Rede e internet, logo VPN, e le a entrada en lugar da icona da barra de estado. A VPN sempre activa e Bloquear conexións sen VPN son axustes do dispositivo que manteñen viva a interface e cortan fugas; non amplían nada. Desde esa mesma pantalla podes esquecer o perfil e revogar a concesión.

Despois percorre os demais permisos. A información da aplicación mostra que concesións de execución ten o cliente, e os axustes de Seguridade mostran se se instalou ao mesmo tempo un certificado de usuario. Calquera dos dous pódese eliminar de forma independente.

A pregunta que merece resposta é estreita: que paquetes entran neste servizo, a onde van e que conserva a implementación. Todo o demais no diálogo é ruído. A referencia de VpnService é a lista autorizada do que expón a interface.

Artigos relacionados