Várias aplicações populares do Android disponíveis na Google Play Store são vulneráveis a uma vulnerabilidade associada à travessia de caminho denominada ataque “Dirty Stream” que poderia ser explorado por um aplicativo malicioso para sobrescrever arquivos arbitrários no diretório principal do aplicativo vulnerável.
“As implicações desse padrão de vulnerabilidade incluem execução de código arbitrário e roubo de tokens, dependendo da implementação de um aplicativo,” disse Dimitrios Valsamaras da equipe de Inteligência de Ameaças da Microsoft em um relatório publicado na quarta-feira.
A exploração bem-sucedida poderia permitir que um atacante assumisse o controle total do comportamento do aplicativo e aproveitasse os tokens roubados para obter acesso não autorizado às contas online da vítima e outros dados.
Duas das aplicações vulneráveis ao problema são as seguintes:
– Xiaomi File Manager (com.mi. Android.globalFileexplorer) – Mais de 1 bilhão de instalações
– WPS Office (cn.wps.moffice_eng) – Mais de 500 milhões de instalações
Enquanto o Android implementa a isolamento atribuindo a cada aplicativo seu próprio espaço de dados e memória dedicados, ele oferece o que é chamado de provedor de conteúdo para facilitar o compartilhamento de dados e arquivos entre aplicativos de maneira segura. No entanto, falhas na implementação poderiam permitir a violação das restrições de leitura/escrita dentro do diretório principal de um aplicativo.
“Esse modelo baseado em provedor de conteúdo fornece um mecanismo de compartilhamento de arquivos bem definido, permitindo que um aplicativo principal compartilhe seus arquivos com outros aplicativos de maneira segura, com controle granular,” disse Valsamaras.
“Entretanto, frequentemente nos deparamos com casos em que o aplicativo consumidor não valida o conteúdo do arquivo que recebe e, o mais preocupante, usa o nome do arquivo fornecido pelo aplicativo principal para armazenar em cache o arquivo recebido dentro do diretório de dados interno do aplicativo consumidor.”
Essa armadilha pode ter sérias consequências quando um aplicativo principal declara uma versão maliciosa da classe FileProvider para permitir o compartilhamento de arquivos entre aplicativos e, por fim, fazer com que o aplicativo consumidor sobrescreva arquivos críticos em seu espaço de dados privado.
Em outras palavras, o mecanismo se aproveita do fato de que o aplicativo consumidor confia cegamente na entrada para enviar payloads arbitrários com um nome de arquivo específico por meio de um intent explícito personalizado, sem o conhecimento ou consentimento do usuário, levando à execução de código.
Como resultado, isso poderia permitir que um atacante sobrescrevesse o arquivo de preferências compartilhadas do aplicativo alvo e fizesse com que ele se comunicasse com um servidor sob seu controle para extrair informações sensíveis.
Outro cenário envolve aplicativos que carregam bibliotecas nativas de seu próprio diretório de dados (em vez de “/data/app-lib”), caso em que um aplicativo mal-intencionado poderia explorar a fraqueza mencionada para sobrescrever uma biblioteca nativa com código malicioso que é executado quando a biblioteca é carregada.
Após a divulgação responsável, tanto a Xiaomi quanto o WPS Office corrigiram o problema até fevereiro de 2024. No entanto, a Microsoft disse que o problema pode ser mais prevalente, exigindo que os desenvolvedores tomem medidas para verificar seus aplicativos em busca de problemas semelhantes.
O Google também publicou sua própria orientação sobre o assunto, instando os desenvolvedores a lidarem adequadamente com o nome do arquivo fornecido pelo aplicativo servidor.
“Quando o aplicativo cliente grava o arquivo recebido no armazenamento, ele deve ignorar o nome do arquivo fornecido pelo aplicativo servidor e, em vez disso, usar seu próprio identificador exclusivo gerado internamente como o nome do arquivo,” disse o Google. “Se gerar um nome de arquivo exclusivo não for prático, o aplicativo cliente deve higienizar o nome do arquivo fornecido.”