Un vistazo a los diferentes ámbitos de seguridad en las aplicaciones Android
domingo, mayo 20, 2012 at 11:39AM
rmontero

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:



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.

Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.