A diferencia de lo que ocurre en los ordenadores personales, cuando instalamos una aplicación en nuestro teléfono o tablet, ésta sólo tiene «derecho» a acceder a aquellas partes del sistema y datos que nosotros hemos consentido. Esto lo hace pidiéndonos previa instalación, que aceptemos los X permisos. La mayoría de personas no hacen caso ni leen estos permisos, simplemente, por costumbre, marcan Sí y listo. Tampoco hay otra opción, o aceptas o no instalas esa aplicación. Recientemente, con la versión de Android 4.3, Google introdujo la herramienta App Ops, cuyo fin era tener control total sobre los permisos que usa cada aplicación, pudiendo deshabilitarlos individualmente. App Ops estuvo presente también en 4.4, y en 4.4.1, sin embargo, con la última y rápida actualización a 4.4.2, App Ops desapareció.
Los permisos
Normalmente otorgamos permisos para muchas acciones que realizamos en la red. Un ejemplo muy típico es el de aceptar que se utilice nuestra ubicación cuando hacemos una búsqueda en Google. Con esta acción estamos permitiendo a Google ofrecernos búsquedas más acertadas, como por ejemplo, al buscar un restaurante, nos aparecerán los más cercanos a nosotros.
Esto mismo es lo que ocurre en las aplicaciones para móviles. Una App de temática gastronómica que nos ofrece opiniones sobre locales y posibilidad de reservar en ellos necesitará multitud de permisos. Pedirá obviamente permiso para conectarse a Internet, permiso para conocer tu ubicación (para lo mismo que en el ejemplo anterior). Como la aplicación también permite reservar mesa, podrá pedir permiso para mandar SMS de confirmación. Si incluye opción de invitar a amigos, pedirá permiso para acceder al marcador y a la libreta de contactos, y si en ella se pueden publicar análisis del local y los platos, también podría tener acceso a la cámara.
Como veis, en un principio pueden parecer muchos permisos para una aplicación tan «simple», pero si se piensa, pueden ser totalmente normales. Lo que no es normal es que una aplicación de linterna, cuya única función es encender un LED, pida permisos para conocer la ubicación exacta por GPS y una conexión a Internet.
Esto no es un caso inventado, hace poco veíamos como ocurría exactamente esto con una aplicación existente en Play y era denunciada y obligada a borrar los millones de datos recopilados de sus usuarios, que estaban siendo vendidos a anunciantes. Pero claro, es lo que decíamos al principio, por una parte el usuario en ocasiones ni lee los permisos, pero es que aunque los lea, en Android no había hasta la llegada de App Ops, una forma de instalar la aplicación y deshabilitar los permisos no deseados.
App Ops
Con la llegada de la actualización de Android 4.4.2, una de sus novedades (que contamos con detalle) fue la desaparición de la herramienta App Ops que llevaba presente desde 4.3. La Electronic Frontier Foundation (EFF) preguntó directamente a Google por esta decisión y contestaron que App Ops era sólo una función experimental, con fines de desarrollo, que fue liberada por accidente y nunca debió haber llegado al público general ya que podría afectar al funcionamiento de sus propias aplicaciones. Efectivamente, Google tampoco es un alma de la caridad y toda la información que recoge de los usuarios que usan sus servicios y aplicaciones «gratuitas», es muy valiosa, no le interesa que les puedan bloquear su acceso.
El soporte de SELinux
SELinux es la forma abreviada de Security-Enhanced Linux, y se trata de un módulo de seguridad para el kernel Linux que permite aplicar políticas de control de acceso a las distintas partes del código del sistema. SELinux se ha ido incorporando a Android de forma paulatina; en Android 4.3 se implementó en su modo permisivo, en el cual SELinux está activo pero sólo advierte de las acciones «peligrosas» y guarda los registros.
Android 4.4 es la primera versión en incluir SELinux en su modo Enforcing o «de cumplimiento», en él se ha ce cumplir la política de seguridad de SELinux, impidiendo, cuando es necesario, determinadas accesos y registrando las acciones. Entonces, ¿por qué no se ha implementado directamente desde el principio este modo? Pues por compatibilidad. Comenzando con el modo permisivo, tanto Google como los desarrolladores han recopilado mucha información sobre fallos y violaciones de seguridad, lo que les ha dado la oportunidad de corregir su código. Ahora, el paso al modo Enforcing es el nuevo nivel para endurecer los controles que el sistema operativo tiene sobre las aplicaciones instaladas.
El último paso sería dejar al usuario elegir qué permisos quiere que use cada aplicación, permitiendo a SELinux controlar el cumplimiento de sus políticas. Pero hay un problema, y es que hay aplicaciones que necesitan determinados permisos para funcionar.
¿Entonces…?
Cuando un desarrollador crea una aplicación, lo hace teniendo en cuenta los permisos que necesita para que ésta funcione correctamente, porque tiene en cuenta que, el usuario que la descargue, aceptará dichos permisos al instalarla. Pero claro, en el caso de existir una herramienta nativa como App Ops, se da la posibilidad a los usuarios de revocar los permisos que ellos consideren oportunos, sin tener en cuenta si éstos son necesarios o no.
Google ha retirado ahora esta opción, pero con su publicación momentánea y toda la repercusión que ha tenido en los medios, ha dado a los desarrolladores el tiempo para prepararse, para corregir que harán sus aplicaciones cuando le sean revocados los permisos. ¿Qué hará esa aplicación gastronómica cuando no pueda acceder al GPS para buscar el restaurante más cercano? Pues podría bloquearse y mostrar un mensaje informando de que hasta que no vuelvas a activar el permiso, no funcionará. O decirte que compres la versión «sin anuncios» porque le has impedido acceder a Internet, que es el permiso que necesita para mostrarte los anuncios correctos, y lo único que podrá hacer el usuario será, aceptar y volver a otorgarle el permiso o bien, fastidiarse, dejar de usar la aplicación y tener que buscar una alternativa.
Sin embargo, ahora mismo, momento en que Google ha quitado App Ops de Android 4.4.2, sigue habiendo forma de utilizarlo, y es mediante aplicaciones App Ops de terceros, que se pueden instalar desde Google Play y que permiten al usuario revocar individualmente los permisos de determinadas aplicaciones. Es el caso de App Ops (de los desarrolladores Lars Team), que es compatible con 4.4.2, pero eso sí, primero hay que ser root darle autorización, y de App Ops X (de Color Tiger). Pero, curiosamente, la primera de ellas, desde su última actualización requiere de nuevos permisos, en concreto «leer el estado del teléfono y la identidad» y «tener acceso completo a la red», por lo que no deja de resultar irónico que una aplicación que permite revocar esos mismos permisos, nos los pida para funcionar, tal y como indican en este hilo de Reddit.
Hay muchas cuestiones sobre qué pasará con este tema. Esta claro que nosotros, los usuarios, no queremos que nuestra información pulule por ahí y en muchas ocasiones pensamos que la cantidad de permisos requeridos es excesiva. Esto no quiere decir que el caso de la Linterna con permisos abusivos esté bien, ni mucho menos, pero los desarrolladores también viven de eso. Reciben ingresos, o bien vendiéndote la aplicación directamente, o mediante la información que recogen con su aplicación «gratuita», así que si se bloquean los permisos para que esta última opción se dé, el desarrollador también puede bloquearte su uso.
Vía | Pocket Now | CNet | Reddit – Más info | SELinux y SEAndroid