O tráfego DNS pode vazar fora do túnel VPN no Android
(mullvad.net)O tráfego DNS pode vazar para fora do túnel VPN no Android
Confirmação de possibilidade de múltiplos vazamentos de DNS
- Foi identificada recentemente a possibilidade de múltiplos vazamentos de DNS no Android
- Decorre de um bug do próprio Android e afeta apenas alguns aplicativos
- Em 22 de abril, uma segunda-feira, o vazamento de DNS foi reportado por meio de uma denúncia de usuário no Reddit
- Descobriu-se que com a configuração "Block connections without VPN" ativada, ao desativar e ativar a VPN ocorria vazamento de consultas DNS
- Foi iniciada imediatamente uma investigação interna para verificar o problema
- Descobrimos também mais cenários no Android que podem causar vazamentos de DNS
Descobertas
Cenários identificados em que o tráfego DNS pode vazar no Android:
- Quando a VPN é ativada com um servidor DNS não configurado
- Durante curtos períodos enquanto o app de VPN reconfigura o túnel ou é forçado a encerrar/crashar
O vazamento parece ficar restrito a chamadas diretas para a função C getaddrinfo:
- Nos cenários acima, aplicativos que usam esse método para resolver nomes de domínio podem causar vazamento
- Não foram observados vazamentos em apps que usam apenas APIs do Android, como
DnsResolver - O navegador Chrome é um exemplo de aplicativo que pode usar
getaddrinfodiretamente
Independentemente de Always-on VPN e Block connections without VPN estarem ativados:
- Como esse não é o comportamento esperado do sistema operacional, a correção deve ser feita no upstream do OS
Foi possível verificar esse vazamento em várias versões do Android (incluindo a mais recente, Android 14)
Melhorias
Atualmente, com o app bloqueado, o DNS não é configurado:
- O app entra em estado bloqueado se não consegue configurar o túnel de forma recuperável
- Nesse estado, o tráfego deixa de sair do aparelho
- Porém, como o servidor DNS não é configurado nesse estado, pode ocorrer o vazamento de DNS descrito acima
- No momento, a solução será definir temporariamente um DNS fictício para contornar o bug do OS
- A atualização com essa correção deve ser liberada em breve
Mitigar o vazamento durante a reconexão do túnel no app é mais difícil:
- Ainda estamos buscando uma solução
- Embora seja possível minimizar a frequência de reconfiguração do túnel, atualmente não consideramos possível evitar esse vazamento totalmente
É importante deixar claro que nenhum app VPN deveria precisar dessa solução:
- Não é errado um app usar
getaddrinfopara resolução de nomes de domínio - Em vez disso, para proteger todos os usuários do Android, independentemente do app utilizado, a resolução deve ser feita no sistema operacional
Relatamos o problema ao Google com uma proposta de melhoria e esperamos que seja resolvido rapidamente
Passos de reprodução
As etapas abaixo reproduzem o segundo cenário acima, em que usuários de VPN alteram a configuração do túnel (por exemplo, mudando para outro servidor ou alterando o DNS):
- Use-se o app WireGuard, porque é a implementação de referência de VPN no Android
- Observe que o vazamento provavelmente também pode ser reproduzido com outros apps de VPN do Android
- Como um dos apps confirmado a utilizar
getaddrinfo, usamos o Chrome para disparar o vazamento
-
Baixe
spam_get_requests.html -
Instale os apps WireGuard e Chrome
-
Importe
wg1.confewg2.confno WireGuard -
Ative o túnel wg1 no app WireGuard e permita a permissão da VPN
-
Ative "Always-on VPN" e "Block connections without VPN" para o WireGuard nas configurações de VPN do Android
-
Inicie a captura de tráfego no roteador com
tcpdump
$ tcpdump -i <INTERFACE> host <IP of android device> -
Divida a tela para exibir WireGuard e Chrome lado a lado
-
Abra
spam_get_requests.htmlno Chrome e toque em "Start" -
No app WireGuard, alterne entre wg1 e wg2 repetidamente até ver o vazamento no próximo passo
-
Observe o tráfego DNS a seguir no roteador:
11:50:27.816359 IP Pixel-Tablet.lan.53353 > OpenWrt.lan.53: 11200+ A? 307lf5rgn6-19282-11-50-27-519z.mullvad.test.lan. (65) 11:50:27.816359 IP Pixel-Tablet.lan.48267 > OpenWrt.lan.53: 44347+ A? 307lf5rgn6-19284-11-50-27-579z.mullvad.test.lan. (65) 11:50:27.816396 IP Pixel-Tablet.lan.16747 > OpenWrt.lan.53: 44584+ A? 307lf5rgn6-19289-11-50-27-729z.mullvad.test. (61) 11:50:27.816458 IP OpenWrt.lan.53 > Pixel-Tablet.lan.53353: 11200 NXDomain 0/0/0 (65) 11:50:27.816476 IP Pixel-Tablet.lan.45727 > OpenWrt.lan.53: 40503+ A? 307lf5rgn6-19290-11-50-27-759z.mullvad.test. (61) 11:50:27.816542 IP OpenWrt.lan.53 > Pixel-Tablet.lan.48267: 44347 NXDomain 0/0/0 (65) 11:50:27.816588 IP Pixel-Tablet.lan.43821 > OpenWrt.lan.53: 36295+ A? 307lf5rgn6-19291-11-50-27-789z.mullvad.test. (61) 11:50:27.816625 IP OpenWrt.lan.53 > Pixel-Tablet.lan.16747: 44584 NXDomain 0/0/0 (61)
Como "Block connections without VPN" estava habilitado, nada deveria sair do aparelho além do tráfego criptografado da WireGuard, mas aqui podemos ver DNS em texto sem criptografia saindo do aparelho
Conclusão e recomendação
O vazamento DNS pode afetar seriamente a privacidade do usuário, pois pode ser usado para determinar sua localização aproximada e descobrir os sites e serviços usados pelo usuário
Essa descoberta novamente mostra que "Block connections without VPN" não corresponde ao seu nome (ou documentação) e possui vários problemas:
- O tráfego DNS ainda pode vazar em apps sob as condições mencionadas acima
- Como relatado anteriormente, ainda há vazamento de tráfego de verificação de conectividade
De acordo com o modelo de ameaça, pode ser necessário evitar usar Android para tarefas sensíveis ou adotar outras medidas de mitigação para evitar vazamentos:
- Como o objetivo é mitigar parcialmente esse problema no app, mantenha-os atualizados
Opinião GN+
- Como essa é fundamentalmente uma falha do Android OS, esperemos que o Google a corrija em pouco tempo, pois não é desejável que os desenvolvedores de apps que oferecem recurso de VPN precisem resolver esse problema todos.
- O fato de a opção "Block connections without VPN" não funcionar conforme a documentação e ainda haver vazamento de DNS é um problema grande para os usuários. Um dos principais motivos para usar VPN é proteção de privacidade, e por isso o vazamento de DNS pode expor histórico de navegação do usuário, entre outros
- A tecnologia de tunelamento VPN ainda pode ser considerada bastante segura, mas pode ser válido considerar soluções de segurança/privacidade adicionais além da VPN para prevenir vazamentos não intencionais causados pelo OS
- Do ponto de vista dos desenvolvedores, pode haver ajustes temporários nos apps para contornar o bug do OS, mas no longo prazo parece necessária melhoria no sistema operacional para resolver a causa raiz
- À medida que a tecnologia VPN se torna mais sofisticada e popular, esse tipo de problema de segurança está se tornando mais evidente. No futuro, devem-se realizar auditorias contínuas e melhorias de segurança das funções de rede e VPN do OS móvel
1 comentários
Opinião do Hacker News