Un vistazo a los diferentes ámbitos de seguridad en las aplicaciones Android
Android, por el incremento de usuarios de sus terminales y su caracter abierto, junto con una metodología de desarrollo sencilla, ha atraído a numerosos programadores de aplicaciones que han visto en el mercado “Google Play” una forma de hacer dinero o darse a conocer. Desgraciadamente, no todo el mundo trata de hacer dinero de una forma honesta, viendo en la facilidad de publicación de aplicaciones en Google Play, sin ningún tipo de filtro previo, una brecha por la que introducir algunos tipos de software malintencionados, capaces de engañar a los usuarios más despistados. Tal y como veremos más adelante, dentro de las diferentes capas de seguridad de la aplicación, la responsabilidad final de confiar en la instalación de un programa recae en el propio usuario final, ya que por restricciones del sistema operativo, toda aplicación debe configurar en sus archivos de metadatos las funciones del terminal que desea utilizar, por ejemplo realizar llamadas telefónicas, conectarse a internet, etc.. Estos archivos de metadatos serán usados para informar previamente al usuario de las acciones que llevará a cabo una aplicación que va a ser instalada.
Como no hay mal que por bien no venga, algunas compañías dedicadas a la detección de virus encontraron en los terminales móviles Android una ampliación a su negocio. Actualmente en Google Play podemos encontrar gran cantidad de programas antivirus, algunos tan conocidos como AVG, Norton o McAfee. Estas compañías que realmente nos ayudan a protegernos de la acción de un software malintencionado, también son los más interesadas en la presencia de malware en el market, y en caso de que este tipo de software no sea tan abundante como desearían, lo único que tienen que hacer es meter miedo a los usuarios para que nadie se atreva a disponer de un terminal sin antivirus.
Ante algunos informes estadísticos de las empresas de antivirus afirmando un incremento preocupante de malware capaz de infectar terminales Android, Google ha respondido primeramente poniendo en duda la veracidad de dichas afirmaciones y en segundo lugar, lanzando un nuevo servicio llamado Bouncer que analizará el comportamiento de las aplicaciones publicadas en Google Play en busca de software sospechoso. Esta herramienta dispone además de otros mecanismos de defensa del market, por ejemplo, tratará de evitar que los desarrolladores malintencionados reincidan registrándose con una nueva cuenta Google. Además, al igual que se pueden hacer actualizaciones de software automáticas, Google Play podrá eliminar remotamente de los dispositivos el software que ya haya sido instalado y reconocido como malintencionado.
Tal y como reflejan el artículo de presentación de Bouncer del blog oficial de Google Mobile Team, Android fue diseñado desde un principio pensando en la seguridad desde diferentes ámbitos:
SEGURIDAD A NIVEL DEL NUCLEO
Por todos es conocido que el núcleo de Android está compuesto por un kernel linux, por lo que entre otras cosas, hereda de linux parte de las siguientes funcionalidades:
- Sistema de usuarios: Cada vez que se instale una aplicación en el dispositivo se creará un nuevo usuario del sistema con los permisos necesarios para gestionar dicha aplicación. Este usuario no podrá trabajar con otras aplicaciones, a no ser que le sean concedidos permisos expresos para ello. (En algunos a casos puede existir un único usuario para dos aplicaciones, si ambas pertenecen al mismo proveedor).
- Sistema de ficheros: Por defecto los archivos generados por una aplicación son de carácter privado y solo serán accesibles por otras aplicaciones si el aplicativo concede los permisos expresamente para tal fin.
- Sistema de procesos: Las aplicaciones Android se ejecutan sobre la máquina virtual Dalvik, que entre sus características destaca la posibilidad de que existan numerosas instancias de la VM en el sistema operativo, de manera que cada aplicación se ejecuta sobre una instancia o proceso diferente, y por lo tanto disponen de direcciones de memoria distintas, evitando así que una aplicación pueda acceder a datos residentes en la memoria que no le corresponden.
SEGURIDAD A NIVEL DE APLICACIÓN
Cuando comencemos a desarrollar una aplicación para Android, lo primero que debemos tener claro son las utilidades del dispositivo que deseamos utilizar. Por ejemplo, acceder a internet, realizar llamadas, acceder a los contactos, trabajar con los sensores, etc... Todas estas funcionalidades “nativas” del dispositivo deben ser informadas en el archivo AndroidManifest.xml de manera que en tiempo de ejecución, el sistema operativo le conceda a nuestra aplicación el acceso al API que las controla. Por ejemplo, si tenemos una aplicación que se conecta a un servidor externo, pero se nos ha olvidado declarar el permiso “android.permission.INTERNET” en el fichero descriptor de la aplicación, obtendremos un error tipo “SecurityException”, interrumpiendo la ejecución del programa.
Este mecanismo de seguridad también es aplicable a la interactuación entre aplicaciones instaladas en el sistema. Podemos crear permisos personalizados (por ejemplo, org.javahispano.MiPermiso) y aplicarlos a nuestros componentes, de manera que si otra aplicación quiere usarlos tendrá que solicitar en su AndroidManifest.xml dichos permisos.
SEGURIDAD A NIVEL DE FIRMAS DIGITALES
Para que una aplicación sea publicada en el market, esta debe ser debidamente empaquetada y firmada digitalmente. Esta firma nos asegura entre otras cosas, que el archivo no ha sido modificado desde que fue firmado, reconociendo así a un único proveedor de la misma para futuras actualizaciones.
INFORMACIÓN DE SEGURIDAD PROPORCIONADA AL USUARIO
Anteriormente comentábamos que la última palabra a la hora de proporcionar los permisos configurados para una aplicación, la tiene el usuario final. El sistema informará al usuario de las acciones que llevará a cabo la aplicación que se desea instalar. Será responsabilidad del usuario leer atentamente los permisos solicitados por la aplicación, tomando así la decisión de confiar en ella. Para tomar esta decisión siempre nos podemos guiar por el número de descargas de la misma y la opinión o puntos positivos dados por los usuarios.
Reader Comments