jueves, agosto 06, 2015

Android: ¿Pueden las apps saber tu número de teléfono?

Hace ya unas semanas publiqué un artículo que explicaba cómo se podría utilizar Telegram para averiguar el número de teléfono en el que el estaba instalada una app. En ese artículo, en el que intentaba explicar mi preocupación con el sistema de permisos en Android, como ejercicio de demostración contaba cómo usando pocos permisos se puede robar la cuenta de WhatsApp. Para averiguar el número de teléfono, lo que usé yo fue la cuenta de Telegram con el permiso GET_ACCOUNTS. Sin embargo, algunos me preguntaron que por qué no había usado, en lugar del permiso GET_ACCOUNTS, el permiso de READ_PHONE_STATE. Aquí os lo cuento.

Figura 1: ¿Pueden las apps saber tu número de teléfono en Android?

El permiso de READ_PHONE_STATE da información a las aplicaciones que lo tienen concedido la capacidad de acceder a datos de cómo está el terminal en cada instante. Esto permite saber el tipo de red a la que está conectado el terminal en cada instante, si se está produciendo una llamada o no, si la conexión está en itinerancia, etcétera. Información, que bien utilizada pueden ayudar a gestionar la experiencia de usuario en aplicaciones.

Figura 2: Información de estado del teléfono en un
Android sobre Samsung Galaxy S4

Por ejemplo, una aplicación que reproduzca música podría parar la reproducción cuando entre una llamada, o la transferencia de datos reducirse cuando el terminal esté en itinerancia. Para que una app solicite este permiso, en el Manifest debe ir solicitado de la siguiente forma.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Por otro lado, este permiso también permite acceder a datos muy sensibles como la versión exacta del sistema operativo, el número de teléfono y el IMEI del terminal, lo que haría que se pudiera hacer tracking de personas para servicios de publicidad agresiva o recolección de datos de personas concretas. Con este sencillo código se podría intentar acceder al número de teléfono de un terminal.
TelephonyManager tMgr =
   (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
String mPhoneNumber = tMgr.getLine1Number();
TextView textView = (TextView)findViewById(R.id.textview); textView.setText("The phone number is *" + mPhoneNumber + "*");
Figura 3: Accediendo al número con READ_PHONE_STATE

Sin embargo, como muchas apps lo han usado en el pasado de forma maliciosa, algunos fabricantes de terminales Android traen capado el acceso al número de teléfono, otros directamente lo cargan desde la SIM y se puede ver.

Figura 4: Si no sale el número, con el permiso
de READ_PHONE_STATE no se accede a él

Nosotros hicimos una pequeña app [GetMyNumber] para comprobar que si el número de teléfono no aparece ahí, no hay forma de acceder vía READ_PHONE_STATE que puedes descargarte desde aquí. Visto esto, para saber si en tu terminal las apps podrían acceder a tu número de teléfono puedes irte a la ruta (en algunos terminales y versiones cambia).
Settings -> About Phone -> Status -> My Phone Number
Si allí aparece tu número de teléfono, entonces cualquier app que pida el permiso de READ_PHONE_STATE podrá consultar tu número de teléfono. Si por el contrario no sale ahí el número, entonces necesitará tirar de un truco como el de consultar la cuenta de Telegram que conté yo en el otro artículo.

Figura 5: Más de 1.4 Millones de apps acceder a READ_PHONE_STATE

Como os podéis imaginar, el número de apps que utilizan READ_PHONE_STATE para hacer cosas son muchas. Según nuestro Tacyt.... más de 1.4 millones. Así que si tienes un terminal Android, revisa si tu número aparece ahí o no, porque lo mejor es que no aparezca. Yo lo he probado en mi flamante nuevo Samsung Galaxy S6 Edge con el que estoy muy contento, y no aparecía, pero no venía mal comprobarlo. En algunos terminales se puede borrar el número, pero depende mucho del integrador.

Saludos Malignos!

14 comentarios:

Anónimo dijo...

¿Google no podría definir un permiso expecificamente para leer el número de teléfono? Sabiendo que este es un dato muy jugoso y muy personal. Como por ejemplo para hacer span, subscribirlo a SMS premium, suplantaciones de identidad,...

Anónimo dijo...

Masmovil y otras virtuales tienen directamente capados los SMS premium, reflejo de que en su mayor parte son vías para estafas, con poca base real de clientes.

Anónimo dijo...

Chema..., dando tu email de tu cuenta de Tacyt? Tsk, tsk... ;)

Anónimo dijo...

Hola chema, por que creas tanto, ahora me tomara una eternidad tanta información que haz colocado, haber cuando hablas sobre los Clickjacking , que yo lo he echo y mira que se puede hacer mucho daño con esta herramienta

Anónimo dijo...

jajaja es verdad... aisssss

Anónimo dijo...

jajaja es verdad lo de la cuenta... aisssss cuánta sabiduría !!!

Chema Alonso dijo...

@Anónimo, es mi cuenta de correo de Eleven Paths, lógicamente si el servicio es de Eleven Paths y pide un correo electrónico, la cuenta que uso es la de Eleven Paths, junto con Latch. }:)

Saludos!

PD: Ya sale en otros artículos muuuy anteriores a este

Anónimo dijo...

Mira que te mencionan acá... Por cierto, mis respetos para ti.
https://www.hispachan.org/g/res/1410294.html

Anónimo dijo...

Maligno no agas caso solo están trolleando XD

erick dijo...

Sabes como desbloquear el sim para una tablet galaxy samsung 3, modelo sm-t217s, gracias

MaxuPixu dijo...

Chema, en el último párrafo dices "Según nuestro Tacyt.... más de 1.4 millones." pero la imagen anterior muestra "1,465,478 results found in more that 500 different apps".

Es decir que sí, casi un millon y medio de resultados, que incluiran decenas de diferentes versiones de la misma app. Lo que son apps diferentes realmente solo son algo más de 500.

Si es así deberíais especificarlo un poco mejor en vuestro Tacyt.

Saludos benignos.

Chema Alonso dijo...

@Anónimo , lo de las 500 es un límite nuestro como el de Linkedin. Son "más" de 500. Deja de tener sentido ese valor. Son las que he puesto en el artículo. Saludos!

MaxuPixu dijo...

No soy Anónimo :)

Pues lleva a confusión como puedes ver. ¿Habéis considerado omitir esa parte de la frase?

Anónimo dijo...

Telegram ha modificado su perfil en la versión 3.3 para Android para evitar el robo del número de teléfono.

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares