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.
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.
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.
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.
¿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,...
ResponderEliminarMasmovil 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.
ResponderEliminarChema..., dando tu email de tu cuenta de Tacyt? Tsk, tsk... ;)
ResponderEliminarHola 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
ResponderEliminarjajaja es verdad... aisssss
ResponderEliminarjajaja es verdad lo de la cuenta... aisssss cuánta sabiduría !!!
ResponderEliminar@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. }:)
ResponderEliminarSaludos!
PD: Ya sale en otros artículos muuuy anteriores a este
Mira que te mencionan acá... Por cierto, mis respetos para ti.
ResponderEliminarhttps://www.hispachan.org/g/res/1410294.html
Maligno no agas caso solo están trolleando XD
ResponderEliminarSabes como desbloquear el sim para una tablet galaxy samsung 3, modelo sm-t217s, gracias
ResponderEliminarChema, 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".
ResponderEliminarEs 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.
@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!
ResponderEliminarNo soy Anónimo :)
ResponderEliminarPues lleva a confusión como puedes ver. ¿Habéis considerado omitir esa parte de la frase?
Telegram ha modificado su perfil en la versión 3.3 para Android para evitar el robo del número de teléfono.
ResponderEliminar