Cloak and Dagger: un agujero en todas las versiones de Android

Cómo un par de simples permisos permiten a una aplicación robar contraseñas, registros de actividad del usuario y otras canalladas.

Esto no es un simulacro. Sucede con todas las versiones de Android y, en el momento de la publicación de este texto, Google todavía no ha parchado la vulnerabilidad mediante la que los delincuentes pueden robar datos (como contraseñas), instalar aplicaciones con todos los permisos y vigilar si el usuario interactúa o escribe con cualquier smartphone o tablet Android. Repetimos: Esto no es un simulacro.

El ataque, bautizado como Cloak and Dagger, lo demostraron los empleados del Instituto de Tecnología de Georgia y de la Universidad de California del campus de Santa Bárbara. Le comunicaron el problema a Google en tres ocasiones, pero en cada una de ellas, este contestó diciendo que todo funcionaba como debía funcionar. A los investigadores no los quedó más remedio que publicar sus hallazgos: crearon una página web, cloak-and-dagger.org, para ello.

La esencia de Cloak and Dagger

En pocas palabras, el ataque utiliza una aplicación de Google Play. Aunque esta no pida permisos específicos al usuario, los delincuentes obtienen los derechos para mostrar la interfaz de la aplicación por encima de otras aplicaciones, bloqueándolas visualmente, y para hacer clic en botones en nombre del usuario de modo que este no se dé cuenta de nada sospechoso.

El ataque es posible porque a los usuarios no se les solicita explícitamente que permitan a las aplicaciones acceder a las funciones de SYSTEM_ALERT_WINDOW al instalar aplicaciones desde Google Play, y el permiso para acceder a ACCESSIBILITY_SERVICE (A11Y) es fácil de obtener.

¿Qué son esa clase de permisos? El primero permite a una aplicación ocupar la interfaz de cualquier otra y, el segundo, da acceso a una serie de funciones (de accesibilidad) pensadas para personas con problemas auditivos o de visión. El último puede hacer cosas muy diferentes, incluso peligrosas, en un dispositivo, al permitir a una aplicación vigilar lo que sucede en otras aplicaciones e interactuar con ellas en nombre del usuario.

¿Qué podría ir mal?

Una capa invisible

Los ataques que hacen uso del primer permiso, SYSTEM_ALERT_WINDOW, se superponen a otra aplicación con su propia interfaz sin que el usuario lo detecte. Es más, las ventanas que muestran pueden tener cualquier forma (hasta con agujeros). También pueden registrar las acciones que realice el usuario o dejarlo estar para que la aplicación de debajo lo registre.

Por ejemplo, los desarrolladores maliciosos pueden crear una capa transparente que se superponga al teclado de un dispositivo Android y capture todo lo que se haga al deslizar el dedo por la pantalla. Al registrar la posición donde el usuario tocó la pantalla y la posición de los caracteres en el teclado, el atacante puede saber qué está escribiendo exactamente el usuario en el teclado. Los programas maliciosos de ese tipo se llaman keyloggers. Este es uno de los ejemplos por el que los investigadores decidieron demostrar el ataque.

Por lo general, SYSTEM_ALERT_WINDOWS es un permiso muy peligroso y Google admite que debería estar limitado a una pequeña cantidad de aplicaciones. Sin embargo, con aplicaciones tan populares como Facebook Messenger, Skype y Twitter pidiendo acceso al mismo, el equipo de Google, aparentemente, decidió que sería más fácil si Google Play lo concedía directamente sin solicitárselo al usuario. Simplicidad y seguridad, por desgracia, no van siempre de la mano.

Los peligros de las características de accesibilidad

El segundo permiso, accesibilidad, se diseñó con buenas intenciones: para facilitar la experiencia de interacción con dispositivos Android de personas con problemas auditivos o de visión. Sin embargo, esta característica da a las aplicaciones una gran cantidad de permisos a menudo usados con fines diferentes (por aplicaciones que requieren ejecutar acciones que normalmente no se permiten en Android).

Por ejemplo, para leer en voz alta lo que aparece en la pantalla de personas con problemas de visión, una aplicación con acceso a las características de accesibilidad puede obtener información como: qué aplicación se ha abierto, sobre qué pincha el usuario y cuando aparece una notificación, lo que significa que la aplicación sabe todo lo que sucede. Y eso no es todo. Además, para monitorizar actividades, la aplicación también puede realizar varias acciones en nombre del usuario.

En resumen, Google sabe que el permiso de accesibilidad da a la aplicación la habilidad de hacer prácticamente todo lo que se piense que se puede hacer en el dispositivo; por ello, es necesario activar el permiso de accesibilidad en cada una de las aplicaciones desde un menú especial de la sección de ajustes del smartphone.

El problema es que, al usar el primer permiso, SYSTEM_ALERT_WINDOW, y al mostrar ventanas que ocupan la mayor parte de la pantalla (además del botón “Aceptar”), los atacantes pueden engañar a los usuarios para que permitan las opciones de accesibilidad al hacerles creer que están aceptando algo inofensivo.

Luego, como esta característica puede percibir el contexto y actuar en nombre de los usuarios, lo que incluye realizar compras en la tienda Google Play, a los atacantes les resulta muy fácil usar la Google Play para descargar una aplicación espía especial y darle cualquier permiso que quieran. Es más, pueden hacerlo incluso cuando la ventana está apagada o, por ejemplo, mientras se reproduce un vídeo, bloqueando así todo lo que esté sucediendo bajo ella.

El phishing definitivo

Acceder a SYSTEM_ALERT_WINDOW y a ACCESSIBILITY_SERVICE también permite a los farsantes realizar ataques de phishing sin que el usuario lo sospeche.

Por ejemplo, cuando un usuario abre la aplicación de Facebook e intenta acceder a la información de inicio de sesión, otra aplicación con los permisos de accesibilidad puede comprender lo que sucede e interferir. Luego, al usar SYSTEM_ALERT_WINDOW y la habilidad de superponerse a otras aplicaciones, la aplicación puede mostrar al usuario una ventana phishing que puede parecerse a la de Facebook en la que el usuario, sin sospecharlo, introduciría la información de inicio de sesión de su cuenta.

En este caso, el conocimiento del contexto permite a los desarrolladores mostrar ventanas de phishing en el lugar adecuado solo cuando el usuario vaya a introducir una contraseña. Y, para el usuario, el inicio de sesión de Facebook habría funcionado del modo esperado, por lo que no tendría ningún motivo para sospechar que algo ha ido mal.

Los ataques antes descritos no son nuevos para los investigadores de seguridad e, incluso, tienen su propio nombre: tapjacking. Google dio a los desarrolladores de aplicaciones para Android un modo de detectarlo: una aplicación para ver si hay superposición sobre alguna aplicación, en cuyo caso los usuarios no podrán realizar algunas acciones. Por ello, muchas aplicaciones de banca están protegidas contra ataques de este tipo. Sin embargo, el único modo de estar 100 % seguro de que una aplicación no es vulnerable a este tipo de ataques es contactar con el desarrollador.

Cómo proteger tu dispositivo de Cloak and Dagger

Los autores de la investigación sobre Cloak and Dagger han probado el ataque en las tres versiones más populares de Android: Android 5, Android 6 y Android 7, que entre las tres tienen el 70 % de la cuota de dispositivos Android y resultó que todas son vulnerables al ataque (y seguro que las versiones anteriores también). En otras palabras, si tienes un dispositivo Android, puede que también te afecte.

Así pues, esto es lo que puedes hacer para protegerte:

1. Trata de no instalar aplicaciones desconocidas desde Google Play u otra tienda, en especial aplicaciones gratuitas. Las aplicaciones legítimas no te atacarán usando Cloak and Dagger. Sin embargo, la pregunta sobre cómo saber si una aplicación es maliciosa o no sigue sin respuesta.

2. Comprueba regularmente los permisos de las aplicaciones de tu dispositivo y revoca los innecesarios. Puedes leer esta publicación para saber más sobre cómo hacerlo.

Por último, pero no menos importante, no olvides instalar soluciones de seguridad en dispositivos Android. Hay una versión gratuita de Kaspersky Internet Security for Android y, si todavía no tienes una solución de seguridad en tu smartphone o tablet, instalarla es un buen comienzo.

Consejos