Como a detecção de raiz de um jogo de anime levou à descoberta de uma vulnerabilidade de segurança em telefones LG, OnePlus, Huawei, Xiaomi e outros

Descobriu-se que smartphones de vários fabricantes como LG, OnePlus, Huawei, Xiaomi vazam informações de processo de aplicativos. Aqui está o que isso significa.

O sistema operacional móvel Android é usado em mais de 2 bilhões de dispositivos todos os meses por consumidores regulares e entusiastas de tecnologia. Embora o número de pessoas que desbloqueiam o bootloader e fazem root em seus smartphones seja relativamente pequeno quando em comparação com a população geral de usuários do Android, ainda há muitos de nós em fóruns como XDA e Reddit. Magisk é uma ferramenta indispensável para a comunidade de ajustes. Ele fornece acesso root sem sistema e possui ferramentas como MagiskHide para permitir que usuários com root continuem usando os aplicativos, jogos e serviços de que desfrutam sem restrições. No entanto, um popular jogo de anime tem abusado habilmente de uma vulnerabilidade de segurança do sistema para contornar a detecção anti-root do Magisk. Veja como isso funciona e quais dispositivos são afetados por esta vulnerabilidade de segurança.

  • Um jogo usou um bug para detectar se um dispositivo foi enraizado. Se o dispositivo estiver enraizado, o jogo impede o usuário de jogar.
  • O bug permite que um aplicativo leia o status de outros aplicativos na memória, sem precisar de nenhuma permissão especial. O bug não permite que aplicativos roubem dados de outros aplicativos. O bug não é grave e é bastante inofensivo.
  • O Google já está ciente do problema e atualizou suas ferramentas de teste para garantir que todos os dispositivos estejam protegidos.

Fundo

Um popular jogo de anime chamado Fate/Grand Order impede que usuários enraizados tentem jogar. Desenvolvedor reconhecido pelo XDA topjohnwu, o principal desenvolvedor do Magisk, anteriormente descobri um caminho para ignorar a detecção de raiz do Fate/Grand Order, mas sua solução não estava funcionando em seu OnePlus 6, apesar de seus melhores esforços. Determinado a não desistir, o desenvolvedor analisou Fate/Grand Order para descobrir como ele ainda estava detectando root em seu dispositivo OnePlus. Como ele explica em seu Postagem média, isso o levou à descoberta de uma vulnerabilidade de segurança que o Fate/Grand Order aparentemente estava abusando para continuar detectando o acesso root em dispositivos OnePlus.

Destino/Grande Ordem (Inglês)Desenvolvedor: Aniplex Inc.

Preço: Grátis.

4.

Download

Procfs e Android

Em sistemas operacionais baseados em Unix, existe um sistema de arquivos especial chamado “procfs” contendo informações sobre processos (pense em aplicativos), como uso de memória (pense em RAM), status (se o processo está em execução, dormindo, etc.). Na maioria dos sistemas operacionais baseados em Unix, o usuário e os aplicativos têm acesso fácil ao procfs para ver quais tipos de aplicativos e serviços estão em execução em seus sistemas (pense nisso como o Gerenciador de Tarefas do Windows). No entanto, o Google começou a bloquear o acesso ao procfs começando no Android 7.0 Nougat. Antes do Android Nougat, aplicativos como o SystemPanel eram capazes de coletar dados sobre quais aplicativos estavam em execução sem a necessidade de permissões especiais. Depois do Android Nougat, os aplicativos precisam usar APIs como Estatísticas de uso ou Serviço de acessibilidade, ambos controlados por permissões que devem ser concedidas pelo usuário.

Painel do Sistema 2Desenvolvedor: NextApp, Inc.

Preço: Grátis.

4.2.

Download

O Google impede que aplicativos leiam o status de outros aplicativos por meio de procfs montando /proc com o sinalizador "hidepid=2". Ao montar procfs com hidepid=2, os aplicativos só podem ver o status de seu próprio processo. Assim, um aplicativo precisaria usar APIs aceitas, como UsageStats ou AccessibilityService, para obter informações sobre quais aplicativos e serviços estão sendo executados no dispositivo.

Vulnerabilidade

E se o procfs não estiver montado com hidepid=2? Bem, então os aplicativos seriam capazes de ler livremente o status de outros aplicativos (e pontos de montagem) em execução no sistema sem precisar de permissões extras*. O Google monta procfs com hidepid=2 em seus próprios dispositivos, mas não impõe esse requisito em dispositivos de outros fabricantes. Vários dispositivos da LG, OnePlus, Huawei/Honor, Xiaomi e outros não montaram procfs com hidepid=2, que é o que aplicativos como Fate/Grand Order aproveitam para detectar se Magisk está presente em o dispositivo.

*Uma mudança de segurança no Android 9 Pie impede que os aplicativos leiam informações fora de seu próprio “contexto SELinux” porque cada aplicativo agora está isolado individualmente. SELinux é um módulo do kernel que atua como uma espécie de porteiro, impedindo que aplicativos e serviços acessem arquivos que não deveriam. Um contexto SELinux é como um rótulo para um arquivo que contém informações como usuário e função. Aplicativos com o mesmo contexto SELinux podem ler informações sobre outros aplicativos no mesmo contexto se o sinalizador hidepid=2 não estiver habilitado para procfs. Em dispositivos que executam o Android 9 Pie, apenas os aplicativos desenvolvidos para o Android Pie terão as novas alterações do SELinux do Android Pie aplicadas a eles. Os aplicativos direcionados ao Android 8.1 Oreo ou inferior usarão as antigas regras do SELinux, permitindo-lhes acessar informações sobre processos no mesmo contexto SELinux, desde que o procfs seja montado sem esconderpid=2. A maioria dos aplicativos em execução no seu dispositivo deve ser direcionada pelo menos ao Android 8.0 Oreo, graças a novos requisitos do Google Play, mas muitos ainda não foram atualizados para o Android Pie.

As capturas de tela a seguir mostram as consequências de não montar procfs com hidepid=2.

Quão ruim é isso?

Se comparássemos esta vulnerabilidade do sistema com explorações como Fusée Gelée, Blueborne, KRACK, e Fusão/Espectro, então esse bug não é nada em comparação. Os aplicativos não podem usar isso para obter acesso root ou roubar suas senhas. Suas contas bancárias estão seguras, assim como seus cartões de crédito. O pior que um aplicativo pode fazer é saber se outro aplicativo está sendo executado no seu dispositivo, o que tem usos muito limitados. Lembre-se de que esse é um comportamento padrão em muitas distribuições GNU/Linux e que só recentemente o Google começou a bloquear o acesso a procfs com Android Nougat. Esse bug permite que os aplicativos contornem a necessidade de certas permissões para monitorar outros processos, mas eles ainda não conseguem quebrar a sandbox do Android e roubar dados de outros aplicativos. Independentemente disso, este é um comportamento não intencional e quebra um recurso de privacidade do Android, por isso deve ser corrigido.

Meu dispositivo foi afetado?

Aqui está uma lista de dispositivos que descobrimos que não montam procfs com hidepid=2:

OEM

Dispositivo

Versão Android

Vazamentos de procfs

ASUS

ZenFone 5Z

Android 8.0 Oreo

Sim

Amora

CHAVE2

Android 8.0 Oreo

Não

Essencial

PH-1

Torta Android 9

Não

Google

Pixel 2

Torta Android 9

Não

Google

Pixel 3

Torta Android 9

Não

Google

Pixel3XL

Torta Android 9

Não

Honra

Magia 2

Torta Android 9

Sim

HTC

Sub12+

Android 8.0 Oreo

Sim

Huawei

Companheiro 20 X

Torta Android 9

Sim

LG

G7 fino Q

Android 8.0 Oreo

Sim

LG

V40 ThinQ

Android 8.1 Oreo

Sim

Motorola

Moto G4

Android 8.1 Oreo

Não

Nokia

7.1

Android 8.1 Oreo

Não

OnePlus

6

Android 8.1 Oreo/Android 9 Torta

Sim

OnePlus

6T

Torta Android 9

Sim

Razer

Telefone 2

Android 8.1 Oreo

Sim

Samsung

Galáxia Nota 8

Android 8.0 Oreo

Não

Samsung

Galáxia Nota 9

Android 8.1 Oreo/Android 9 Torta

Não

Samsung

Galáxia S7

Android 8.0 Oreo

Não

Samsung

Galáxia S8

Android 8.0 Oreo

Não

Samsung

Galáxia S9

Torta Android 9

Não

Samsung

Galaxy S9+ (Exynos)

Android 8.0 Oreo

Sim

Sony

Xperia XZ1

Torta Android 9

Não

Xiaomi

Mi Mix 2S

Torta Android 9

Sim

Xiaomi

POCO F1

Android 8.1 Oreo

Sim

Como verificar se o seu dispositivo foi afetado

É muito fácil verificar se o seu dispositivo está vazando informações do processo para outros aplicativos (em outras palavras, o procfs não está montado com hidepid=2). Embora você possa usar comandos shell como fizemos, você também pode verificar usando um aplicativo desenvolvido por topjohnwu. Seu aplicativo também permite remontar procfs com hidepid = 2, se o seu telefone estiver enraizado.

BaixarProcGate

Haverá uma solução?

Sim, isso será corrigido. O Google agora exigirá que todos os dispositivos montem procfs com hidepid=2. Eles vão fazer cumprir isso atualizando o Compatibility Test Suite (CTS), um conjunto de testes que todos os dispositivos devem passar para poder usar aplicativos e serviços do Google Play. Todos os OEMs (que desejam vender dispositivos com a Google Play Store pré-instalada) deverão eventualmente emitir uma atualização para remontar procfs com hidepid=2 em um futuro próximo. Como os dispositivos OnePlus foram os primeiros a serem descobertos com esse problema, OnePlus já foi informado e está trabalhando em uma correção. Atualizaremos este artigo se outros OEMs comentarem sobre esse bug, mas não há necessidade de se perguntar se o OEM do seu dispositivo emitirá uma atualização. Se eles quiserem que sua atualização passe no CTS, eles deverão corrigir esse bug.