Ferramentas de teste de vazamento ExpressVPN

Uma ilustração de um cabo de vazamento do computador visto através de uma lupa.

As Ferramentas de Teste de Vazamento ExpressVPN são um conjunto extensível de ferramentas Python projetadas para teste de vazamento manual e automatizado de aplicativos VPN.

Desenvolvidas pelo Laboratório de Pesquisa de Privacidade da ExpressVPN, as ferramentas foram inicialmente construídas para dois propósitos:

  • Fornecendo testes de regressão robustos e automatizados de aplicativos ExpressVPN
  • Facilitar as investigações de teste de vazamento para fortalecer ainda mais essas aplicações

Logo percebemos que essas ferramentas poderiam realmente ser benéficas para o setor de VPN mais amplo. Decidimos, portanto, disponibilizá-los de código aberto totalmente disponível sob a licença MIT.

Esperamos que, ao fazer isso, ajudemos a fornecer uma experiência on-line mais privada e segura para todos os usuários da VPN:

  • fornecer aos usuários e terceiros uma maneira independente de verificar a qualidade das VPNs e avaliar seus próprios riscos de privacidade e segurança;
  • criar uma referência mais alta para proteção contra vazamentos em todo o setor de VPN; e
  • reunindo conhecimentos de toda a indústria em torno de testes de vazamento

Introdução às ferramentas

As ferramentas podem ser encontradas no GitHub em: https://github.com/expressvpn/expressvpn_leak_testing.

Para começar, siga as instruções no arquivo README.md. Enquanto fornecemos uma visão geral das ferramentas abaixo, o repositório GitHub sempre deve ser considerado a única fonte de verdade para a documentação relacionada às ferramentas.

Observe que, para seguir as instruções de teste incluídas em nossos estudos de caso do Privacy Research Lab, você precisará instalar as ferramentas de vazamento conforme a documentação no GitHub. Supõe-se que sempre que você executar qualquer um dos estudos de caso, o diretório raiz de ferramentas refere-se ao local em que você clonou o repositório git acima.

Visão geral das ferramentas

Nós usamos Python

As ferramentas são escritas principalmente em Python, com algumas ferramentas auxiliares em outros idiomas, conforme necessário. Escolhemos o Python por vários motivos:

  • É multiplataforma e com suporte imediato na maioria dos casos
  • É bem conhecido por uma grande porcentagem de desenvolvedores e, portanto, é facilmente acessível
  • É rápido desenvolver – não temos requisitos de desempenho para uma estrutura de teste
  • É uma linguagem expressiva que nos permite escrever código facilmente legível

Observe que usamos o Python 3, pois isso está se tornando rapidamente o padrão de fato.

É como teste de unidade

As ferramentas foram projetadas para funcionar como um conjunto de testes de unidade. Um único script é usado para iniciar o conjunto, que executa uma série de testes. Cada teste verifica se há um tipo específico de vazamento sob condições específicas, por exemplo, sob certas condições da rede, e então relata uma aprovação, falha ou erro.

Um teste – ou caso de teste – corresponde aproximadamente a um único arquivo Python. O conjunto de testes foi projetado para ser familiar aos desenvolvedores acostumados a trabalhar com conjuntos de testes de unidade; portanto, cada teste segue o padrão familiar de configuração (), teste () e desmontagem ().

Os casos de teste foram projetados para serem o mais genéricos possível. Os casos de teste podem ser executados com diferentes configurações de VPN, diferentes configurações de rede e assim por diante. Quando são executados, eles recebem uma configuração que especifica como eles serão executados para essa rodada específica de testes. Um arquivo de configuração é passado para o conjunto de testes, que lista todos os testes a serem executados e suas configurações.

Um exemplo de como executar os testes seria executar o seguinte comando no diretório raiz das ferramentas:

./run_tests.sh -c configs / case_studies / vanilla_leaks.py

Configurações de dispositivo e rede

O conjunto foi projetado para poder executar testes em configurações arbitrárias de dispositivos e redes. Estávamos cientes desde o início que alguns aspectos do comportamento da VPN precisariam de mais de um dispositivo para testar; portanto, projetamos o conjunto de testes para permitir isso desde o início..

O dispositivo a partir do qual os testes são executados é chamado de orquestrador de teste. Todos os outros dispositivos são simplesmente referidos como dispositivos de teste.

O tipo mais simples de teste é executado em um único dispositivo (testes em um único dispositivo) e verifica se há vazamentos diretamente nesse dispositivo. Por exemplo, é possível executar uma ampla classe de testes de vazamento do Windows diretamente em um dispositivo Windows. Nesse caso, o orquestrador de teste também é realmente um dispositivo de teste. Testes mais complexos (testes para vários dispositivos) podem envolver um dispositivo de teste executando a VPN, um roteador e um dispositivo de captura de pacotes.

Automação

O conjunto de testes foi projetado para oferecer suporte total à automação de testes. No entanto, prontos para o uso, os testes sempre exigirão alguma interação manual. Sempre que for necessária interação manual, o conjunto de testes solicitará claramente ao usuário e informará o que fazer.

Uma das partes mais difíceis de automatizar é o controle sobre os aplicativos VPN. De fato, para muitos testes, essa é a única peça do quebra-cabeça que não é automatizada. Atualmente, não temos planos de oferecer suporte para automatizar o controle de aplicativos VPN no repositório. Adicionar esse suporte, no entanto, é suportado pela arquitetura do conjunto.

Observe que internamente, implementamos a automação completa de nosso próprio aplicativo para facilitar o teste de integração contínua. Não planejamos disponibilizar essas ferramentas de automação como parte do repositório de código aberto.

Configurando as ferramentas

Instruções detalhadas sobre como configurar dispositivos de teste são fornecidas no repositório do GitHub. Apenas mostramos aqui o que esperar ao configurar dispositivos.

O conjunto de testes é suportado em dispositivos Linux, macOS e Windows (ou seja, o conjunto Python pode ser instalado e executado diretamente nesses dispositivos). Os dispositivos móveis também são suportados pelas ferramentas, mas o próprio conjunto nunca será executado diretamente nesses dispositivos.

Recomendamos o uso de máquinas virtuais (VMs), tanto quanto possível, principalmente para testes de dispositivo único. As VMs oferecem várias vantagens:

  • Fácil de criar e configurar novas interfaces de rede
  • Permite manter sua máquina host livre de muitas instalações de software de terceiros exigidas pelos testes
  • Capturar tráfego saindo de uma VM é mais simples do que capturar tráfego saindo de um dispositivo físico real
  • Fácil de pré-configurar instantâneos e reverter quando necessário

Para testes detalhados sérios, sempre recomendamos executar os testes também em hardware físico real, para descartar possíveis diferenças entre hardware virtualizado e real.

Observe que a maioria dos testes precisa de permissões de administrador (administrador) para executar; portanto, para simplificar, todo o conjunto será executado como root.

Saiba mais sobre cenários de vazamento para os quais as ferramentas testam

Os estudos de caso a seguir fornecem mais informações sobre alguns dos cenários de vazamento testados por essas ferramentas, explicando como eles podem impactar sua privacidade e segurança, além de descrever como usar a ferramenta relevante:

  • Estudo de caso 1: vazamentos de “baunilha”
  • Estudo de caso 2: vazamentos do WebRTC
  • Estudo de caso 3: vazamentos de transição de rede
  • Estudo de caso 4: vazamentos de servidores VPN inacessíveis
  • Estudo de caso 5: vazamentos de falhas no processo VPN

Contribuindo para as ferramentas

Ficamos felizes em receber contribuições para as ferramentas, sejam elas para correções de erros, sugestões de melhorias ou casos de teste totalmente novos. Você pode enviar contribuições por meio de solicitações pull no GitHub.

Entre em contato conosco sobre as ferramentas

Você pode entrar em contato conosco sobre as ferramentas em [email protected].

Observe que as ferramentas estão atualmente em alfa estado e provavelmente mudará frequentemente. No entanto, nos esforçaremos para garantir que as ferramentas estejam sempre em um estado utilizável.