2 votos

¿Puede una aplicación de Android eludir sus permisos declarados?

He descargado un APK de una fuente de terceros (no de Google Play). Mi pregunta es si esta aplicación de Android, aunque indique que sólo puede acceder a mi almacenamiento USB, puede hacer también otras cosas (como leer el IMEI) sin indicarlo explícitamente. En esencia, lo que me pregunto es si el sistema Android realmente lo impide o es sólo algo que el desarrollador declara en su manifiesto.

5voto

Izzy Puntos 45544

Como Meer Borg afirma correctamente en su respuesta Cuando se instala una aplicación, el gestor de paquetes lee su Manifest y anota los permisos solicitados en los archivos que el sistema Android controla ( /data/system/packages.xml , /system/etc/permissions/*.xml (un archivo por aplicación)). Además, para cada permiso hay un grupo de usuarios que se asignará a la aplicación 1 . Así, cada vez que la aplicación intenta acceder a una función que requiere un permiso, éste se comprueba: si el permiso fue declarado en el Manifest el acceso es concedido - de lo contrario es rechazado. Tenga en cuenta que esta es una descripción simplificada, aunque

Aunque esta es la regla general, para algunas cosas hay posibilidades de eludir los permisos. Si una aplicación, por ejemplo, quiere enviar algo a Internet, también podría hacerlo llamando a una "intención", pidiendo al navegador que abra una determinada página (como por ejemplo http://bad.server/collector.php?info1=some_info&info2=more_info ). Sin embargo, esto no pasaría desapercibido para el usuario, ya que el navegador se abriría en primer plano y mostraría esta acción. Por lo tanto, si una aplicación hiciera uso de esta característica, el clamor se escucharía (normalmente).

Si un desarrollador realmente quiere hacer "cosas malas", también podría utilizar otra forma: tener una app con todos los permisos necesarios, y una segunda con casi ninguno. Si el usuario tiene ambas aplicaciones instaladas, la segunda podría llamar a la primera (con muchos permisos) para procesar "cosas" que no puede hacer por sí misma (por falta de permisos), de la misma manera que se ha descrito anteriormente para acceder a Internet. Tenga en cuenta que este principio se utiliza, por ejemplo, para los complementos, y la "comunicación entre aplicaciones" en un sentido positivo, también

TL;DR:

Una aplicación está restringida a los permisos que solicita, y no puede directamente acceder a otras "cosas". El acceso "indirecto" no pasaría desapercibido.

P.D:

Esto es sólo una presentación abstracta y simplificada. No estoy en el desarrollo de Android, por lo que algunos dev podría tener una mejor comprensión y corregirme, o añadir a lo anterior.


1 Ejemplo (observe la lista de "grupos"):

shell@android:/ $ id
uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)

El id (sin parámetros) muestra información sobre el "usuario actual". En este caso, estaba usando adb shell El usuario es la "aplicación shell" (más bien la aplicación integrada). Shell Unix ). La lista de grupos muestra los permisos concedidos a la shell, por lo que puede, por ejemplo, leer y escribir en la SDCard, acceder al Bluetooth y a Internet (además de algunas cosas más).

2voto

Meer Borg Puntos 149

Cada aplicación que instalas tiene un archivo llamado manifest.xml que dicta a qué puede acceder la aplicación. Cuando se instala una aplicación, se comprueba ese archivo y se muestra qué permisos se necesitan para instalar esa aplicación.

Así que a menos que tu teléfono esté rooteado, y use un exploit. O reempaquetas ese archivo y su archivo de manifiesto para añadir más permisos... sólo accederá al almacenamiento USB como se cita. El sistema Android impide cualquier otro acceso y el código que intente acceder a esos otros permisos simplemente devolverá un error desde el punto de vista del programa.

Pero creo que incluso el acceso al almacenamiento USB es un problema porque puede acceder a todos los demás archivos que otros programas crean utilizando el almacenamiento USB, no todo el sistema de archivos, sólo una sub parte de él que se define como "almacenamiento USB". Pero como la aplicación no accede a Internet, lo que la aplicación accede se queda en tu dispositivo.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X