Por Roberto Sousa para o Pplware
O WhatsApp Messenger é um dos mais populares serviços para troca de mensagens entre utilizadores. Este serviço tem mais de 450 milhões de utilizadores activos, que geram cerca de 50 mil milhões de mensagens diárias.
Depois dos problemas de privacidade do serviço (ver aqui) e de em 2013 termos alertado para a possibilidade das mensagens ficarem expostas, hoje explicamos a razão porque não devemos usar o WhatsApp (quando queremos garantir a confidencialidade e integridade da informação).
Na FAQ do WhatsApp podemos ler que as mensagens entre aplicação e o servidor são cifradas e que mal sejam entregues ao destino são apagadas do servidor não podendo de modo algum aceder ao nosso histórico de mensagens.
O problema de segurança deste aplicação consiste no facto de ela não verificar o certificado antes de iniciar a comunicação com o servidor ficando assim vulnerável ao ataque man in the middle. Este problema pode ser corrigido implementando um passo extra conhecido por ssl pinning .
O que é o SSL Pinning?
Muitos de nós já estamos familiarizados com o SSL. No entanto a segurança baseada apenas no SSL pode não garantir a confidencialidade e integridade da informação.
Sempre que uma aplicação que recorra ao protocolo SSL quer comunicar com um servidor ela pede ao servidor um certificado SSL e caso o certificado seja reconhecido pela aplicação então a ligação segura é estabelecida e todos os dados são cifrados com a chave publica do servidor.
Deste modo parece-nos impossível que alguém consiga enganar a nossa aplicação sem um certificado valido podendo assim interceptar assim as nossas mensagens mas o problema de muitas aplicações actuais é que elas não verificam o certificado iniciando assim a comunicação com o servidor que lhe passou o certificado mal recebe o mesmo ficando assim com sujeitas ao ataque man in the middle.
Por exemplo, a Alice quer comunicar com o servidor A através do seu smartphone.
Ela envia um pedido a pensar que esta mandar para o servidor mas na realidade esta a mandar para o Bob que intercepta o pedido e lhe responde com um certificado, como a aplicação da Alice não vai verificar o certificado ela vai começar a comunicação cifrando os seus dados com a chave publica.
Visto que o Bob tem conhecimento da chave privada do certificado ele poderá agora ler todas as mensagens que a Alice envia para ele cifrando novamente as mensagens agora com a chave pública do servidor enviando para o servidor de modo a que a sua presença passe despercebida. Deste modo a Alice envia as mensagens para o Bob a pensar que as está a enviar para o servidor e o servidor recebe as mensagens do Bob pensando que é a Alice que as está a mandar.
Mas afinal o que é então o SSL Pinning? Esta técnica não passa de uma verificação do certificado assim que a aplicação o recebe, para isso é necessário que a aplicação tenha uma copia do certificado de modo a poder verificar a sua credibilidade. Esta técnica tem como inconveniente que a aplicação precisa de atualizações contantes de modo a evitar que o certificado expire inutilizando por completo a aplicação.
Outro ponto importante a realçar é que as nossas mensagens não são cifradas ponto a ponto, ou seja, elas são cifradas antes de serem enviadas e decifradas assim que chegam ao servidor sendo posteriormente cifradas para enviar para o destinatário. Como muitos dos utilizadores utilizam esta aplicação para transporte de informação sensível, as nossas mensagens ficam em texto claro e disponíveis para qualquer pessoa que tenha acesso aos servidores da empresa.