È possibile utilizzare l'autorizzazione RECEIVE_SMS per intercettare i messaggi SMS?


13

Ho notato alcune app che richiedono l' RECEIVE_SMSautorizzazione . Due cose mi sono chiare qui:

  • RECEIVE_SMS consente a un'app di "agganciare" gli SMS in arrivo
  • READ_SMS si applica solo agli SMS già memorizzati

Dato che alcune delle app stavano solo chiedendo RECEIVE_SMS, ma non per READ_SMS, mi sono incuriosito: questo sembra implicare che RECEIVE_SMSnon è solo mirato alla parte ricevente, ma l'app può anche fare quello che vuole con il messaggio ricevuto - ad esempio, leggilo, quindi buttalo via silenziosamente (quindi l'utente non si accorge nemmeno che c'era un SMS - che potrebbe essere il modo in cui i Trojan TAN agiscono per bloccare gli identificativi per le transazioni bancarie online).

Ma sarebbe anche possibile per una tale app "intercettare" il messaggio, cioè riceverlo, leggerlo (ed elaborarne il contenuto in qualsiasi modo, ad es. Inoltrandolo con altri mezzi come tramite IP), e quindi passarlo come se non fosse successo nulla? In altre parole: può spiare l'utente in questo modo?

Risposte:


13

Sì, può, ma solo su Android 4.3 e versioni precedenti. Questo è usato ad esempio in Whatsapp. Quando attivi l'app, Whatsapp invia un SMS al numero che hai segnalato e l'app lo intercetta silenziosamente e segnala ai server che ha ricevuto l'SMS. Ecco come l'account è legato al tuo numero.

Naturalmente, questo può essere utilizzato anche in app dannose. Se un'app si registra come un destinatario SMS con la massima priorità, l'app può ascoltare gli SMS in arrivo, elaborarli e eliminarli senza che l'utente se ne accorga, oppure inoltrare al successivo ascoltatore di SMS con la seconda priorità più alta.

Questo è stato ripetuto in Android 4.4 e, se ho capito correttamente, solo l'app SMS predefinita ha accesso a tutti gli SMS in arrivo ( SMS_DELIVER_ACTION) e le altre app con autorizzazioni corrette riceveranno solo una notifica del messaggio in arrivo ( SMS_RECEIVED_ACTION). Inoltre, l' SMS_RECEIVEDintento non è modificabile, non può essere fermato. Presumo che in Android 4.4, questo venga fatto per consentire all'utente di vedere tutti i messaggi SMS in arrivo nell'app predefinita.

Modifica: ho trovato alcune informazioni utili sul blog degli sviluppatori Android . Lo testerei ulteriormente, ma il mio unico telefono Android è attualmente solo WiFi, quindi nessun SMS: /


Grazie mille per le intuizioni, onik! Non sapevo di quei cambiamenti di KitKat. Con quelli in atto, ho capito bene che ad esempio WhatsApp ora avrebbe bisogno anche READ_SMSdell'autorizzazione per accedere al suo "codice di attivazione" - o fare app con l' RECEIVE_SMSautorizzazione "ricevere una copia" ora (tranne l'app SMS predefinita, che avrebbe " ricevere l'originale ")?
Izzy

@Izzy Ho una domanda anche su questo. L'utente ora vedrebbe questi testi di controllo direttamente nella sua app predefinita ora? O sarebbe un'opzione per essere in grado di vedere testi "consumati", ma in realtà non mostrati nella tua normale app di testo?
Cruncher,

1
@Izzy Se ho capito bene, le app che non sono impostate come app SMS predefinite possono accedere a un provider di sola lettura, il che significa che non hanno bisogno di READ_SMSautorizzazione, ma non sono in grado di modificare l'SMS (contrassegnare come letto, eliminare ecc. ).
onik,

1
@Cruncher I messaggi devono essere visualizzati nell'app SMS predefinita, poiché solo quell'app può scrivere su SMSProvider per eliminare i messaggi.
onik,

1
"Sì, può". Ma solo su Android 4.3 e versioni precedenti. Dal 4.4 SMS_RECEIVED è un intento non modificabile. Per favore, aggiungi questo fatto importante. Vedi anche stackoverflow.com/questions/20021492/…
Flow

10

Come stanno le cose

  1. Android 4.3 e versioni precedenti senza app Hangouts: qualsiasi app con autorizzazione SMS_RECEIVE può leggere / interrompere un SMS in arrivo (ala Whatsapp)
  2. Android 4.3 e versioni precedenti con Hangouts (modalità SMS attivata): qualsiasi app con autorizzazione SMS_RECEIVE può leggere ma non interrompere un SMS in arrivo
  3. Android 4.4 e versioni successive: qualsiasi app con autorizzazione SMS_RECEIVE può leggere ma non interrompere un SMS in arrivo

In tutti e tre i casi, READ_SMS autorizzerà l'app a leggere tutti gli SMS, non solo i nuovi SMS in arrivo.

Come già detto, le cose sono cambiate un po 'in Android 4.4


1
Grazie per aver sottolineato che Hangouts potrebbe fare la differenza per Android <4.4! Indovina che corrisponde a ciò che Onik ha indicato con un'app che registra un ricevitore SMS con la massima priorità e Hangouts lo sta facendo esattamente (quindi nessun'altra app può superarlo)?
Izzy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.