Diego Morabito, especialista em segurança digital na SocialTIC
Tradução: Luma Vírgina
O que é Datávoros?
Datávoros (www.datavoros.org) é um projeto de pesquisa sobre coleta de dados por meio de aplicativos móveis desenvolvidos por governos e empresas com relevância no ambiente mexicano e latino-americano.
A última versão do projeto, lançada em 2022 da SocialTIC, centra-se na análise dos mecanismos que implementam as aplicações para coleta de dados dos usuários, bem como aspectos de privacidade tanto a nível técnico como a nível aviso de privacidade e termos e condições de uso. Embora não seja realizada uma análise exaustiva das implementações de segurança, a criptografia na transmissão de dados é um ponto chave em nossa análise, já que sua ausência poderia colocar em risco tanto a privacidade quanto a segurança dos usuários dos aplicativos.
A metodologia implementada dirige-se, no momento, a aplicações do sistema Android uma vez que, por várias razões técnicas, é mais fácil aplicar várias técnicas para desvendar as aplicações. Esses motivos incluem a possibilidade de usar custom roms que permitem remover vários serviços implementados de fábrica pelo Google e fabricantes dos dispositivos, resultando em análises mais limpas e com menos ruído no tráfego de rede. Além disso, no ecossistema Android existem aplicações como Tracker Control, NetGuard, PcapDroid e Draeneg que permitem a implementação de vários filtros e salvaguardas que não só facilitam a análise das aplicações como também permitem que usuários sem muitos conhecimentos técnicos façam as suas próprias análises. Um último motivo inclui a possibilidade de usar as plataformas Exodus Privacy, Pithus e MobSF para poder complementar as análises e verificar os resultados obtidos.
Em nossa página datavoros.org, os interessados podem encontrar as análises realizadas e as conclusões obtidas, assim como um glossário de termos básicos, uma explicação do projeto e dicas para assumir o controle de sua privacidade. Normalmente os relatórios de análise neles expostos incluem um conjunto de aplicações que analisamos em conjunto de forma a comparar as suas diversas características.
Em docs.datavoros.org a metodologia técnica está disponível para replicar e corroborar nossas análises, bem como para realizar suas próprias. Além disso, estão disponíveis nossos relatórios técnicos sobre cada uma das aplicações analisadas. Esses relatórios têm conclusões particulares para cada aplicação.
As análises são baseadas em duas grandes seções:
- A análise do código é feita exclusivamente para detectar rastreadores e domínios embarcados que possam vir a ser de interesse.
- A análise do tráfego de rede é capturada por meio de uma VPN e algum aplicativo como Tshark ou TCPDump.
Até agora, realizamos dois conjuntos de análises. O primeiro, sobre Apps de segurança cidadã, inclui aplicativos mexicanos desenvolvidos por governos locais e federal que possuem a função de botão de pânico, ou seja, um mecanismo através do qual é ativado um alarme silencioso que notifica as autoridades locais que o usuário está em uma emergência e permite o rastreamento da sua localização via GPS.
O segundo conjunto de aplicativos também inclui aplicativos mexicanos chamados de “monta deudas”. São aplicativos que vêm sendo utilizados principalmente desde a pandemia para solicitar empréstimos de pequeno valor. A maioria dessas aplicações são fraudulentas e embora várias vezes o valor solicitado seja depositado na conta do usuário, os juros são muito altos (daí o nome) e as formas de cobrança de dívidas são ilegais, pois incluem métodos como assédio, ameaças e chantagem.
Datávoros e a criptografia
Nas análises identificamos dois “tipos” de tráfego de rede: o que corresponde ao tráfego gerado especificamente pelo aplicativo, ou seja, as comunicações estabelecidas entre o aplicativo e os servidores onde está alojado, e o tráfego de rede pertencente tanto ao serviços do Google, quanto aos diversos rastreadores que o aplicativo possa ter.
Nós os separamos nestas duas categorias porque o tráfego próprio do aplicativo é aquele que normalmente contém informações sensíveis do usuário como seu nome, endereço, geolocalização exata, dados bancários, etc. Em vez disso, o tráfego dos rastreadores normalmente contém metadados (que, por regra geral, são anônimos).
Nesses dois tipos de tráfego, descobrimos que a criptografia nem sempre está em vigor. Normalmente nos serviços do Google e nos rastreadores de tráfego sempre está criptografado, enquanto no próprio tráfego do aplicativo há várias exceções. Diante desta flagrante falha de segurança, notificamos as equipes de desenvolvimento (especialmente naqueles aplicativos pertencentes aos governos) para que possam corrigi-la. Eles nem sempre tem corrigido. Isso representa um grande problema de segurança, já que os aplicativos que temos analisado dos governos lidam com dados confidenciais dos usuários e informações tão delicadas quanto o envio de um sinal de alarme.
Criptografia no Android, como funciona?
A criptografia em aplicativos Android é implementada por meio de certificados SSL e isso permite que as conexões e o envio de dados através do protocolo HTTP sejam criptografados. Atualmente, a maioria das páginas e aplicativos da web implementam essa tecnologia que permite a proteção da informação quando ela está em trânsito. No entanto, não é um método 100% seguro. Como indica este relatório EFF, existem várias maneiras de contornar esse mecanismo de segurança. Embora este relatório seja de 2011, os diferentes métodos explicados no artigo ainda são usados.
Em particular, o ataque “Man in the Middle” permanece relativamente eficaz em quebrar a criptografia no protocolo HTTPS. Isso nos faz pensar, por razões óbvias, sobre os níveis de segurança que os usuários têm ao enviar suas informações pela Internet e, acima de tudo, se eles estão cientes dos riscos que isso implica. É verdade que o uso de uma VPN pode ajudar muito a eliminar esses riscos, mas em termos de adoção e hábitos, quantas pessoas usam uma VPN diariamente ou para atividades sensíveis?
No Android, para aliviar algumas dessas limitações de segurança, foram criados dois mecanismos complementares:
- SSL Pinning e
- Virtual Machine detection.
A tecnologia SSL pinning anda de mãos dadas com outro mecanismo de segurança que foi adicionado ao sistema operacional Android em versões posteriores ao Android 5, a saber, “não confiar em certificados instalados pelo usuário”. Como já dissemos, sem entrar em detalhes técnicos, o protocolo HTTP implementa certificados SSL para criptografar e verificar se está sendo contatado o domínio que você deseja acessar (e não um falso). Nas primeiras versões do Android, podia ser adicionado pelo usuários um falso feito aos certificados de segurança que vinham pré-instalados, o que, na prática, fazia com que todas as comunicações fossem detectadas como seguras e utilizassem as chaves de criptografia incorporadas no certificado do usuário. Isso acabava quebrando a criptografia, pois bastava instalar um proxy transparente (que tivesse esse mesmo certificado) entre o dispositivo do usuário e o servidor para descriptografar o tráfego. Na verdade, você ainda pode fazer isso hoje para quebrar o tráfego de muitas páginas da web.
Depois que o mecanismo de segurança que evitava a confiança em certificados instalados pelo usuário foi implementado, em uma versão posterior do Android (a 7), implementou-se o SSL pinning. Essa tecnologia fixa a lista de certificados que são de confiança no código do aplicativo, de forma que qualquer certificado fora dessa lista é proibido e impossibilita o estabelecimento de conexão com o servidor. Embora esse seja um mecanismo bastante eficaz, a realidade é que ele ainda pode ser quebrado por meio de plataformas como a Frida. Esta plataforma permite modificar o código da aplicação em tempo real (ou seja, enquanto a aplicação está em execução). Obviamente, se o código puder ser modificado, a lista de certificados confiáveis também poderá ser modificada. O problema do Frida é que a forma de rodar essa plataforma pressupõe rodar os aplicativos em um ambiente virtualizado, ou seja, não pode rodar direto no aparelho Android (ou se puder, tem que ser rooteado). É neste ponto que dois mecanismos de segurança podem ser aplicados para complementar o SSL pinning. A primeira é a detecção de roteamento. Muitos aplicativos não funcionarão se detectarem que o telefone está roteado; a segunda é a detecção de uma máquina virtual ou, melhor dizendo, a detecção se o aplicativo está sendo executado em um ambiente virtualizado. Muitos aplicativos não funcionam em ambientes virtualizados ou têm funcionalidade limitada.
Em conclusão, com a implementação de todos os mecanismos de segurança é possível fazer com que “quebrar” a criptografia se torne uma tarefa muito complexa que requer muitas características particulares para poder ser realizada. Isso complica muito os ataques aos quais os usuários estão expostos.
Reflexões
Como vimos anteriormente, diferentes tipos de ataques podem violar a segurança dos mecanismos de criptografia, pelo que se recomenda a utilização de outras técnicas complementares e até promovemos a sua adoção como boas práticas de desenvolvimento.
Outra consideração importante a ter em mente é que a criptografia e os mecanismos de segurança ao seu redor tornam as tarefas de auditoria mais complexas, levantando um grande dilema em torno da coleta invasiva de dados: como podemos verificar se a informação que está sendo coletada é apenas a que se indica ou autoriza sem violar a privacidade do usuário por meio de práticas como quebrar ou modificar a criptografia?
O objetivo central do Datávoros é identificar quais dados os aplicativos coletam: os dados que os usuários fornecem voluntariamente ao se registrar ou os dados que um aplicativo (e seus rastreadores) coleta automaticamente. A única maneira que temos para poder verificar exatamente quais dados são, seria quebrar a criptografia. Embora no Datávoros tenhamos acesso a grande parte desses dados por meio da leitura da documentação do Google, de seus rastreadores e dos rastreadores de outras empresas, existe sempre a possibilidade de as empresas não estarem sendo 100% transparentes em sua documentação e aviso de privacidade. Qual seria a maneira de verificar se o que eles dizem é verdade? Uma opção é quebrar a criptografia, porém essa prática é complexa, ilegal sob a lei (a menos que seja solicitado o consentimento prévio das equipes de desenvolvedores) e viola os princípios de privacidade digital.
Concluímos, então, que nos encontramos em uma situação de difícil resolução. Para contextualizar nossa experiência, falaremos sobre os dois conjuntos de aplicativos que analisamos. No caso do primeiro conjunto, o dos aplicativos de botão de pânico, como dissemos antes, enviamos avisos à equipe de desenvolvimento para que corrigissem alguns problemas de segurança em seus aplicativos. Alguns o fizeram prontamente, outros nem mesmo responderam. No caso dos aplicativos que não responderam e que ainda estão ativos e podem ser baixados na PlayStore, não temos canais de comunicação para relatar problemas de segurança ou privacidade e muito menos para conversar com os responsáveis.
No caso dos aplicativos de Monta deudas[3] , o problema tem outras conotações. A maioria desses aplicativos é fraudulenta. Podemos presumir que os desenvolvedores responderão às nossas denúncias ou preocupações?
Finalmente, a discussão sobre criptografia não pode ser abordada isoladamente. Muitas vezes tem sido sugerido que as empresas desenvolvedoras, por padrão, implementem uma maneira de remover a criptografia para que agências governamentais ou terceiros possam acessar dados por motivos de segurança. Isso, é claro, abre muitos caminhos para a discussão sobre a relação privacidade-segurança no que diz respeito à sociedade como um todo; além disso, abre questionamentos sobre os possíveis abusos que os governos poderiam exercer contra os cidadãos e também abre a discussão se, ao implementar uma porta dos fundos, ela não poderia ser explorada por atores mal-intencionados. Em todo o caso, no caso das organizações da sociedade civil, parece-nos que a solução para estes problemas reside na implementação de políticas de transparência e prestação de contas que permitam a auditoria da sua tecnologia nos casos em que for necessário, sem violar os princípios de segurança e privacidade dos usuários.