L'autorisation RECEIVE_SMS peut-elle être utilisée pour intercepter des messages SMS?

13

J'ai remarqué plusieurs applications demandant l' RECEIVE_SMSautorisation . Deux choses sont claires pour moi ici:

  • RECEIVE_SMS permet à une application de "capturer" les SMS entrants
  • READ_SMS s'applique uniquement aux SMS déjà stockés

Comme certaines applications demandaient RECEIVE_SMS, mais pas pour READ_SMSmoi, je suis devenu curieux: cela semble impliquer qu'il RECEIVE_SMSne vise pas seulement la partie destinataire, mais l'application peut également faire ce qu'elle veut avec le message reçu - par exemple, le lire, puis jetez-le en silence (afin que l'utilisateur ne remarque même pas qu'il y avait un SMS - ce qui pourrait être la façon dont les chevaux de Troie TAN agissent pour casser les identifiants des transactions bancaires en ligne).

Mais serait-il également possible pour une telle application «d'intercepter» le message, c'est-à-dire de le recevoir, de le lire (et de traiter son contenu de quelque manière que ce soit, par exemple en le transmettant par d'autres moyens tels que via IP), puis de le transmettre en tant que si rien ne s'était passé? En d'autres termes: peut-il espionner l'utilisateur de cette façon?

Izzy
la source

Réponses:

13

Oui, c'est possible, mais uniquement sur Android 4.3 et inférieur. Ceci est utilisé par exemple dans Whatsapp. Lorsque vous activez l'application, Whatsapp envoie un SMS au numéro que vous avez signalé, et l'application l'intercepte discrètement et signale aux serveurs qu'elle a reçu le SMS. C'est ainsi que le compte est lié à votre numéro.

Bien sûr, cela peut également être utilisé dans des applications nuisibles. Si une application s'inscrit en tant que récepteur SMS avec la priorité la plus élevée, l'application peut écouter les SMS entrants, les traiter et les ignorer sans que l'utilisateur ne s'en aperçoive jamais, ou les transmettre au prochain écouteur SMS avec la deuxième priorité.

Cela a été refait dans Android 4.4, et si j'ai bien compris, seule l'application SMS par défaut a accès à tous les SMS entrants ( SMS_DELIVER_ACTION), et les autres applications avec les autorisations correctes ne recevront qu'une notification du message entrant ( SMS_RECEIVED_ACTION). De plus, l' SMS_RECEIVEDintention n'est pas annulable, elle ne peut pas être arrêtée. Je suppose que dans Android 4.4, cela est fait pour permettre à l'utilisateur de voir tous les messages SMS entrants dans l'application par défaut.

Modifier: trouvé des informations plus utiles sur le blog des développeurs Android . Je testerais cela plus avant, mais mon seul téléphone Android est actuellement uniquement Wi-Fi, donc pas de SMS: /

onik
la source
Merci beaucoup pour la perspicacité, onik! Je ne connaissais pas ces modifications KitKat. Une fois ceux-ci en place, ai-je bien compris que, par exemple, WhatsApp aurait également besoin de l' READ_SMSautorisation pour accéder à son "code d'activation" - ou que les applications avec l' RECEIVE_SMSautorisation "reçoivent une copie" maintenant (sauf pour l'application SMS par défaut, qui " recevoir l'original ")?
Izzy
@Izzy J'ai aussi une question à ce sujet. L'utilisateur verrait-il maintenant ces textes de contrôle directement dans son application par défaut maintenant? Ou serait-ce une option pour pouvoir voir les textes "consommés", mais ne pas apparaître réellement dans votre application de texte habituelle?
Cruncher
1
@Izzy Si j'ai bien compris, les applications qui ne sont pas définies comme l'application SMS par défaut peuvent accéder à un fournisseur en lecture seule, ce qui signifie qu'elles n'ont pas besoin d' READ_SMSautorisation, mais qu'elles ne peuvent pas modifier le SMS (marquer comme lu, supprimer, etc. ).
2014 à 9h17
1
@Cruncher Les messages doivent apparaître dans votre application SMS par défaut, car seule cette application peut écrire dans SMSProvider afin de supprimer les messages.
2014 à 9h18
1
"Oui il peut". Mais uniquement sur Android 4.3 et inférieur. Depuis 4.4 SMS_RECEIVED est une intention non abortable. Veuillez ajouter ce fait important. Voir aussi stackoverflow.com/questions/20021492/…
Flow
10

En l'état

  1. Android 4.3 et versions antérieures sans application Hangouts: toute application avec l'autorisation SMS_RECEIVE peut lire / abandonner un SMS entrant (ala Whatsapp)
  2. Android 4.3 et versions antérieures avec Hangouts (mode SMS activé): toute application disposant de l'autorisation SMS_RECEIVE peut lire mais pas abandonner un SMS entrant
  3. Android 4.4 et supérieur: toute application disposant de l'autorisation SMS_RECEIVE peut lire mais pas abandonner un SMS entrant

Dans les trois cas, READ_SMS donnera à l'application la permission de lire tous les SMS et pas seulement les nouveaux SMS entrants.

Comme onik l'a mentionné, les choses ont beaucoup changé dans Android 4.4

daamitt
la source
1
Merci d'avoir souligné que les Hangouts peuvent faire une différence pour Android <4.4! Je suppose que cela correspond à ce que l'onik a indiqué avec une application qui s'enregistre en tant que récepteur SMS avec la priorité la plus élevée , et Hangouts fait exactement cela (donc aucune autre application ne peut le surpasser)?
Izzy