OnePlus deixou em funcionamento um aplicativo de teste de engenharia da Qualcomm que atua como backdoor para conceder acesso root no OnePlus 3, 3T e 5.
Atualização: OnePlus emitiu um resposta oficial para o assunto. Eles removerão a função raiz ADB do EngineerMode em uma atualização futura.
Já se passou pouco mais de um mês desde que o OnePlus estava coletando informações pessoalmente identificáveis para análise. A empresa rapidamente reverteu o curso e, em uma atualização, prometeu ser mais transparente, dando claramente aos usuários o opção de cancelar a análise do OxygenOS. Embora esse desastre já tenha sido resolvido, outro está aparecendo esta noite. Um usuário do Twitter que atende pelo nome "Elliot Alderson" (em homenagem ao personagem principal da popular série de televisão Mr. Robot) descobriu que OnePlus deixou acidentalmente em funcionamento um aplicativo de teste de diagnóstico feito pela Qualcomm. Depois de descompilar este aplicativo, ele descobriu que ele pode ser explorado para conceder acesso root - agindo efetivamente como um backdoor.
O aplicativo se chama "EngineerMode" e é essencialmente um aplicativo de sistema feito pela Qualcomm e fornecido a OEMs como OnePlus para que os OEMs testem facilmente todos os componentes de hardware do dispositivo. O aplicativo está pré-instalado em todos os dispositivos OnePlus 3, OnePlus 3T e OnePlus 5 e pode ser facilmente acessível por meio de qualquer iniciador de atividades, pois todas as atividades do aplicativo são exportadas.
Na verdade, nós cobriu a existência deste aplicativo há vários meses, mas na época não tínhamos ideia para que poderia ser usado. O usuário do Twitter descompilou o aplicativo (sua fonte foi postada online aqui) e encontrei uma atividade interessante chamada DiagEnabled. Em particular, um método se destacou na atividade: escalatedUp. Este método aceita um valor booleano (verdadeiro/falso) e uma string. A string é uma senha que é verificada pelo método antes de definir as propriedades do sistema persist.sys.adbroot
e oem.selinux.reload_policy
para 1.
A primeira propriedade do sistema é particularmente interessante porque permite ao usuário executar o ADB como root. Isso abre imediatamente a possibilidade de adquirir acesso root completo no telefone – tudo sem desbloquear o bootloader. Então, como exatamente você faz com que o aplicativo EngineerMode defina essas propriedades do sistema como '1'?
@fs0c131y precisava encontrar a senha correta para enviar o intent para passar a lógica no método postado acima. Encontrar essa senha não é uma tarefa simples, entretanto. Ele descompilou a biblioteca responsável por gerar a senha (chamada libdoor.so) e descobriu onde estava localizado o hash da senha: /data/backup/fpwd
. A senha é gerada a partir de várias propriedades de construção, como ro.product.model
e ro.product.brand
e não seria fácil fazer engenharia reversa.
Felizmente com a ajuda David Weinstein e Agora seguro no Twitter, ele descobriu a senha necessária ao EngineerMode para escalar o ADB para privilégios de root.
Basta enviar uma intenção neste formato:
adb shell am start -n com.android.engineeringmode/.qualcomm.DiagEnabled --es "code""angela"
onde com.android.engineeringmode/.qualcomm. DiagEnabled é o nome do componente da atividade DiagEnabled que estamos explorando, e “code” é o nome da string e “angela” é o valor da senha relevante.
@fs0c131y afirma que irá publicar um aplicativo em breve isso enviará esta intenção para elevar o ADB para privilégios de root, corrigir a imagem de inicialização para desabilitar o dm-verity e instalar os sub-binários. Fique de olho nos fóruns do XDA para saber quando esse aplicativo raiz for publicado.
O que isso significa para os usuários finais é que você pode Faça root facilmente no OnePlus 3, OnePlus 3T e OnePlus 5 sem nunca desbloquear o bootloader. No entanto, essa exploração não permite que um aplicativo malicioso conceda acesso root a si mesmo; portanto, a menos que alguém tenha acesso físico ao seu dispositivo para configurar o ADB, você estará protegido contra exploração.
Caso você queira se proteger dessa exploração de qualquer maneira, você pode desinstalar o aplicativo do usuário atual o que impedirá que a intenção seja enviada para o aplicativo EngineerMode. Basta usar o seguinte comando no ADB:
adbshellpmuninstall-k--user 0 com.android.engineermode
Claro, isso ainda é considerado uma exploração e esperamos que o OnePlus corrija isso em breve. Tudo o que eles realmente precisam fazer é remover esse aplicativo de compilações futuras.
Atualização 1: A senha é ‘angela’
O usuário @fs0c131y postou uma atualização em sua página do Twitter com a senha necessária para entrar em um shell ADB com root. Essa senha é...Ângela. Para quem não assiste Mr. Robot, Angela é o nome de um dos protagonistas. Acho que deve haver muitos fãs do Sr. Robot na Qualcomm.
Se você inserir o comando que postei acima no ADB, notará que o ADB se desconecta imediatamente e o servidor reinicia. Entre no ADB novamente e você notará que agora é um shell com root.
Atualização 2: como a senha foi derivada
A empresa de segurança Now Secure publicou uma postagem no blog detalhando como eles derivaram a senha necessária para que essa exploração de root ocorresse. Você pode ler a postagem completa aqui.
Atualização 3: Mais dispositivos afetados
Estas últimas notícias não deveriam ser uma surpresa, mas mais dispositivos parecem ser afetados por esta exploração. Isso ocorre porque o aplicativo EngineerMode é um aplicativo da Qualcomm, então é possível que outros OEMs o tenham deixado pré-instalado em seus dispositivos. Até agora, os usuários entraram em contato com @fs0c131y no Twitter para confirmar se o aplicativo está instalado em alguns dispositivos Asus Zenfone e Xiaomi. Você pode verificar facilmente se o seu dispositivo possui esse aplicativo acessando Configurações e vendo quais aplicativos estão instalados.
Atualização 4: Fazendo root no seu dispositivo
Usando alguns comandos através do shell ADB enraizado, agora é possível empurre o binário su para o seu dispositivo. Usando isso, você pode instalar um aplicativo gerenciador de root como o SuperSU e conceder acesso root gratuitamente a outros aplicativos. Tudo sem desbloquear seu bootloader!
Atualização 5: OnePlus responde
OnePlus respondeu oficialmente à situação. Em um postagem no blog, a empresa reitera que esta exploração só pode ser utilizada se um invasor tiver acesso físico ao dispositivo e tiver habilitado a depuração USB. Para ativar a depuração USB, o invasor também precisa do PIN/senha do seu dispositivo. Assim, o backdoor root não é facilmente explorável por qualquer aplicativo ou pessoa, mas mesmo assim o OnePlus abordará as preocupações dos usuários removendo essa funcionalidade do aplicativo EngineerMode.