A permissão RECEIVE_SMS pode ser usada para interceptar mensagens SMS?

13

Eu notei alguns aplicativos solicitando a RECEIVE_SMSpermissão . Duas coisas estão claras para mim aqui:

  • RECEIVE_SMS permite que um aplicativo "faça snap" de SMS recebidos
  • READ_SMS aplica-se apenas ao SMS já armazenado

Como alguns aplicativos apenas pediam RECEIVE_SMS, mas não para READ_SMS, fiquei curioso: isso parece implicar que RECEIVE_SMSnão é apenas direcionado à parte receptora, mas o aplicativo também pode fazer o que deseja com a mensagem recebida - por exemplo, leia-a e depois jogue-o fora silenciosamente (para que o usuário nem perceba que havia um SMS - que pode ser a maneira como os Trojans da TAN agem para obter identificadores para transações bancárias on-line).

Mas também seria possível que um aplicativo desse tipo "intercepte" a mensagem, por exemplo, receba-a, leia-a (e processe seu conteúdo de qualquer maneira, por exemplo, encaminhe-a por outros meios, como via IP), e depois a transmita como se nada tivesse acontecido? Em outras palavras: ele pode espionar o usuário dessa maneira?

Izzy
fonte

Respostas:

13

Sim, pode, mas apenas no Android 4.3 e inferior. Isso é usado, por exemplo, no Whatsapp. Quando você ativa o aplicativo, o Whatsapp envia um SMS para o número que você denunciou, e o aplicativo o intercepta silenciosamente e informa aos servidores que recebeu o SMS. É assim que a conta está vinculada ao seu número.

Obviamente, isso também pode ser usado em aplicativos prejudiciais. Se um aplicativo se registrar como um receptor de SMS com a mais alta prioridade, ele poderá escutar os SMSs recebidos, processá-los e descartá-los sem que o usuário perceba ou encaminhar para o próximo ouvinte de SMS com a segunda maior prioridade.

Isso foi refeito no Android 4.4 e, se bem entendi, apenas o aplicativo SMS padrão tem acesso a todos os SMS recebidos ( SMS_DELIVER_ACTION), e os outros aplicativos com permissões corretas receberão apenas uma notificação da mensagem recebida ( SMS_RECEIVED_ACTION). Além disso, a SMS_RECEIVEDintenção não é abortável, não pode ser interrompida. Suponho que no Android 4.4, isso seja feito para permitir que o usuário veja todas as mensagens SMS recebidas no aplicativo padrão.

Editar: Encontrei algumas informações mais úteis no Blog de desenvolvedores do Android . Eu testaria isso ainda mais, mas meu único telefone Android atualmente é somente Wi-Fi, portanto, nenhum SMS: /

onik
fonte
Muito obrigado pelas ideias, onik! Não sabia sobre essas mudanças no KitKat. Com essas pessoas, entendi corretamente que, por exemplo, o WhatsApp agora também precisaria da READ_SMSpermissão para acessar seu "código de ativação" - ou aplicativos com a RECEIVE_SMSpermissão "recebem uma cópia" agora (exceto o aplicativo SMS padrão, que " receber o original ")?
Izzy
@ Izzy Eu tenho uma pergunta sobre isso também. O usuário agora veria esses textos de controle diretamente no aplicativo padrão agora? Ou seria uma opção ser capaz de ver textos "consumidos", mas não aparecer realmente no seu aplicativo de texto normal?
Cruncher
1
@Izzy Se bem entendi, os aplicativos que não estão definidos como o aplicativo padrão do SMS podem acessar um provedor somente leitura, o que significa que não precisam de READ_SMSpermissão, mas não conseguem editar o SMS (marque como lido, excluído etc.) )
onik
1
@Cruncher As mensagens devem aparecer no seu aplicativo SMS padrão, pois somente esse aplicativo pode gravar no SMSProvider para excluir as mensagens.
Onik
1
"Sim pode". Mas apenas no Android 4.3 e inferior. Desde 4.4 SMS_RECEIVED é uma intenção não abortável. Por favor, adicione esse fato importante. Consulte também stackoverflow.com/questions/20021492/…
Flow
10

Como as coisas estão

  1. Android 4.3 e versões posteriores sem o aplicativo do Hangouts: qualquer aplicativo com permissão SMS_RECEIVE pode ler / abortar um SMS recebido (ala Whatsapp)
  2. Android 4.3 e inferior com o Hangouts (modo SMS ativado): qualquer aplicativo com permissão SMS_RECEIVE pode ler, mas não abortar, um SMS recebido
  3. Android 4.4 e superior: qualquer aplicativo com permissão SMS_RECEIVE pode ler, mas não abortar, um SMS recebido

Nos três casos, o READ_SMS dará ao aplicativo permissão para ler todos os SMSs, não apenas os novos SMSs recebidos.

Como a onik mencionou, as coisas mudaram bastante no Android 4.4

daamitt
fonte
1
Obrigado por apontar o Hangouts pode fazer a diferença para o Android <4.4! Acho que corresponde ao que o onik apontou com um aplicativo registrado como um receptor de SMS com a maior prioridade , e o Hangouts está fazendo exatamente isso (para que nenhum outro aplicativo possa superá-lo)?
Izzy