O Firefox é um dos mais conhecidos e usados navegadores de internet em todo o mundo. A Mozilla, empresa responsável pela ferramenta, é uma das que mais investe nos temas da segurança e privacidade digital. E Pedro Oliveira descobriu uma falha no Firefox para smartphones Android que deixou em alerta os engenheiros da Mozilla.
Tudo começou no início deste ano, quando o especialista em segurança informática do sistema operativo Android decidiu tornar-se também num caçador de prémios – encontrar falhas de segurança em software, reportá-las às empresas responsáveis e, quem sabe, pois nem sempre acontece, receber uma recompensa por isso.
Pedro Oliveira identificou um comportamento anómalo no Firefox que lhe chamou a atenção: o navegador estava a fazer um redirecionamento que nenhum outro navegador baseado no motor Chromium (o mesmo que alimenta o Google Chrome ou o Opera, por exemplo) fazia. A estranheza do comportamento ficou a remoer na cabeça de Pedro, que não dissecou o problema de imediato.
Passaram-se alguns meses e pelo meio encontrou outras falhas noutros browsers, mas o ‘bichinho’ do Firefox manteve-se lá. Em junho, já munido de mais conhecimento técnico para a empreitada que tinha pela frente, decidiu perceber de uma vez por todas o que se passava.
Na toca da ‘raposa’
Por norma, usamos a barra de endereços do browser para aceder a um website, através do protocolo https://, mas a mesma barra pode também ser usada para aceder a ficheiros que estão armazenados no dispositivo, desde que invocado um protocolo diferente. No sistema operativo Android, é possível aceder a ‘contentores’ de ficheiros, que permite ler a representação desses ficheiros no sistema operativo, diretamente a partir do browser usando o protocolo content://. Também é possível aceder a ficheiros, digitando na barra de endereço o caminho interno (file path) para esse ficheiro, desde que comece pelo protocolo file://. E quando Pedro Oliveira tentava abrir um conteúdo através de content://, era reencaminhado para uma página file://. “Pareceu-me um bocado estranho, parecia que o ficheiro que estava a abrir não era aquele, era outro ficheiro”, conta em entrevista à Exame Informática.
E se esta pista fosse a ponta de um cordel, então o investigador começou a puxar e a puxar, até que chegou a um ponto no qual descobriu uma forma de usar uma cadeia de passos no Firefox para aceder a ficheiros privados do smartphone do utilizador, incluindo todo o histórico de cookies do próprio browser.
O investigador de 30 anos, natural de Leiria, percebeu que o Firefox ao fazer o redirecionamento do content:// para file://, “copiava uma representação binária do container [representação do ficheiro] e gravava-a numa pasta temporária, privada e não acessível a outras aplicações”, detalha. Problema? O nome do ficheiro era mantido. O ideal era que o novo nome fosse aleatório, mas isso não acontecia. “Mantendo o nome do ficheiro, o ficheiro podia ser substituído”, pensou logo de seguida.
O que Pedro tentou logo depois foi abrir o ficheiro, mudar o conteúdo do ficheiro original enquanto o ‘verdadeiro’ ainda estava aberto, em cache, no browser. E quando a página carregar novamente, já vai ‘puxar’ o novo conteúdo. O que isto na prática permitiu foi contornar uma regra de segurança que existe no Android, chamada de same origin policy – ou política da mesma origem, em tradução livre. Este mecanismo evita que diferentes aplicações, salvo autorização expressa, possam fazer pedidos de ficheiros de outras aplicações. A falha que descobrira no Firefox permitia contornar justamente isto.
Criando uma página com código malicioso, assim que o utilizador lá entrasse, era descarregado um ficheiro que tinha o mesmo nome do ficheiro que o pirata informático queria roubar. A partir daí estava aberta a porta a extração de dados.
Uma resposta rápida
Pedro Oliveira admite que para se conseguir roubar um ficheiro específico – e que não inclui mensagens, fotografias ou vídeos, por exemplo –, o atacante teria de saber o nome específico do ficheiro e o caminho (file path) correspondente no dispositivo. Se isto limita o ataque por um lado, potencia por outro, já que existem os chamados ficheiros de sistema que têm geralmente o mesmo caminho, ou a mesma lógica de caminho, em milhões de dispositivos. “É possível perceber onde estão gravadas várias informações, como marcadores, sites visitados ou a própria conta do Firefox”.
Na demonstração técnica que fez para enviar à Mozilla, o português conseguiu roubar os cookies associados à utilização do Firefox. Pode não parecer muito, mas esta informação, trabalhada de forma específica, podia terminar no roubo de contas de utilizador de diferentes serviços. “Podia permitir em algumas situações sacar contas de utilizador. Os cookies são o que identificam uma sessão ativa num website. Imagina que tinha acesso aos cookies todos de alguém, seria possível sacar informação dessa pessoa através dos cookies”.
Pedro Oliveira acredita que a falha já estava disponível há algum tempo, mas também acredita que a complexidade do problema e a necessidade de ter vários conhecimentos técnicos, alguns deles específicos – neste caso relativo ao sistema operativo Android –, limitou as hipóteses de ataque em cenários reais. Ainda assim, o roubo de dados sensíveis aliado ao facto de ser uma vulnerabilidade que podia ser explorada de forma remota e com a necessidade de pouca interação do utilizador fez disparar os alarmes na Mozilla, que foi rápida na resposta.
Em cinco dias, a empresa já tinha confirmado a existência da vulnerabilidade e começado a trabalhar numa correção. Foi classificada como crítica, um dos níveis mais graves no ranking dos bugs. No dia 6 de julho, chegava à Google Play Store, a loja de aplicações oficial do Android, o Firefox v68.10.1, já com o problema corrigido. Seguiu-se a atribuição de uma recompensa de cinco mil dólares, o equivalente a 4200 euros ao câmbio atual. Pedro Oliveira decidiu aguardar mais uns meses, para dar tempo que a maioria dos utilizadores fizesse a atualização, até tornar públicos os detalhes desta vulnerabilidade, que foram divulgados nesta semana – os pormenores da investigação podem ser consultados aqui.