Técnica de codificación segura: Hablemos de Tapjacking

Publicado el 31 de octubre de 2017
por Pieter De Cremer
ESTUDIO DE CASO

Técnica de codificación segura: Hablemos de Tapjacking

Publicado el 31 de octubre de 2017
por Pieter De Cremer
Ver recurso
Ver recurso
Usuario con el móvil en la mano
Usuario con el móvil en la mano

Tapjacking, una combinación de "tap" y "hijacking", significa precisamente eso. Se trata de un ataque en el que el atacante secuestra los toques del usuario y lo engaña para que haga algo que no pretendía. Entonces, ¿cómo funciona y cómo lo prevenimos?

Empezamos nuestra historia con las superposiciones de pantalla. Las superposiciones de pantalla o, como Google las llama, las ventanas que utilizan el tipo TYPE_APPLICATION_OVERLAY. Son ventanas que se dibujan encima de otras aplicaciones y normalmente sólo oscurecen una parte de la pantalla. Suelen utilizarse (como la imagen de ejemplo de abajo) cuando una app solicita nuevos permisos.

Permitir que la aplicación acceda a su ventana emergente de contacto

Esta es una función genial y divertida y cada vez más aplicaciones están empezando a utilizarla, piensa en las burbujas de chat de Facebook, o en la navegación de Google Maps en una esquina de la pantalla, como en la captura de pantalla de abajo.

Secure Code Warrior Vídeo de introducción

Sin embargo, hay algunos riesgos de seguridad con estas superposiciones. Cualquier superposición de pantalla activa puede escuchar los toques, ¿de qué otra forma podría saber Facebook que hemos tocado o arrastrado la burbuja? Esto permite que las aplicaciones nos espíen y puedan robar contraseñas y datos de tarjetas de crédito.

Un paso más allá, y de ahí viene el término tapjacking, las superposiciones pueden dibujar cosas encima de otras aplicaciones engañando al usuario para que realice diferentes acciones. El usuario cree que está interactuando con la superposición, pero en realidad sus toques también realizan acciones en la aplicación subyacente. De este modo, la superposición puede engañarle para que habilite ciertos permisos o cambie algunos ajustes peligrosos, como se demuestra en este viejo vídeo de YouTube.

El vídeo de demostración de arriba fue subido a YouTube en 2010, por lo que se hizo en una versión antigua de Android. Pero el ataque sigue siendo relevante hoy en día, ya que salieron a la luz vulnerabilidades que permiten el tapjacking en versiones más recientes de Android como Nougat y Marshmallow.

¿Qué puedes hacer al respecto? Como usuario, es importante darse cuenta de las consecuencias de estas superposiciones y estar atento a las apps que las utilizan. A partir del nivel 23 de la API (Android 6.0 Marshmallow), esto se ha convertido en un permiso que tiene que ser concedido explícitamente por el usuario. Sin embargo, eso deja al 50% de los usuarios de Androidtodavía vulnerables. Todavía puedes comprobar qué aplicaciones hacen uso de este permiso en los ajustes, en "Mostrar sobre otras aplicaciones".

Como desarrolladores, depende de nosotros asegurarnos de que las acciones del usuario se realicen con pleno conocimiento y consentimiento del mismo. Android proporciona un ajuste para sus vistas que hace precisamente eso, llamado filterTouchesWhenObscured. Cuando está activado, el framework descartará los toques que se reciban siempre que la ventana de las vistas esté oscurecida por otra ventana visible. Es tan simple como eso, establece filterTouchesWhenObscured a true, y tu aplicación estará a salvo del tapjacking.

Buena suerte y hasta la próxima semana.

A veces es esencial que una aplicación pueda verificar que una acción se realiza con el pleno conocimiento y consentimiento del usuario, como conceder una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Lamentablemente, una aplicación maliciosa podría intentar engañar al usuario para que realice estas acciones, sin saberlo, ocultando el propósito de la vista.

https://developer.android.com/reference/android/view/View.html

Ver recurso
Ver recurso

Autor

Pieter De Cremer

¿Quieres más?

Sumérjase en nuestras últimas ideas sobre codificación segura en el blog.

Nuestra amplia biblioteca de recursos tiene como objetivo potenciar el enfoque humano de la mejora de la codificación segura.

Ver blog
¿Quieres más?

Obtenga las últimas investigaciones sobre la seguridad impulsada por los desarrolladores

Nuestra amplia biblioteca de recursos está repleta de recursos útiles, desde libros blancos hasta seminarios web, que le ayudarán a iniciarse en la codificación segura orientada a los desarrolladores. Explórela ahora.

Centro de recursos

Técnica de codificación segura: Hablemos de Tapjacking

Publicado el 31 de octubre de 2017
Por Pieter De Cremer

Tapjacking, una combinación de "tap" y "hijacking", significa precisamente eso. Se trata de un ataque en el que el atacante secuestra los toques del usuario y lo engaña para que haga algo que no pretendía. Entonces, ¿cómo funciona y cómo lo prevenimos?

Empezamos nuestra historia con las superposiciones de pantalla. Las superposiciones de pantalla o, como Google las llama, las ventanas que utilizan el tipo TYPE_APPLICATION_OVERLAY. Son ventanas que se dibujan encima de otras aplicaciones y normalmente sólo oscurecen una parte de la pantalla. Suelen utilizarse (como la imagen de ejemplo de abajo) cuando una app solicita nuevos permisos.

Permitir que la aplicación acceda a su ventana emergente de contacto

Esta es una función genial y divertida y cada vez más aplicaciones están empezando a utilizarla, piensa en las burbujas de chat de Facebook, o en la navegación de Google Maps en una esquina de la pantalla, como en la captura de pantalla de abajo.

Secure Code Warrior Vídeo de introducción

Sin embargo, hay algunos riesgos de seguridad con estas superposiciones. Cualquier superposición de pantalla activa puede escuchar los toques, ¿de qué otra forma podría saber Facebook que hemos tocado o arrastrado la burbuja? Esto permite que las aplicaciones nos espíen y puedan robar contraseñas y datos de tarjetas de crédito.

Un paso más allá, y de ahí viene el término tapjacking, las superposiciones pueden dibujar cosas encima de otras aplicaciones engañando al usuario para que realice diferentes acciones. El usuario cree que está interactuando con la superposición, pero en realidad sus toques también realizan acciones en la aplicación subyacente. De este modo, la superposición puede engañarle para que habilite ciertos permisos o cambie algunos ajustes peligrosos, como se demuestra en este viejo vídeo de YouTube.

El vídeo de demostración de arriba fue subido a YouTube en 2010, por lo que se hizo en una versión antigua de Android. Pero el ataque sigue siendo relevante hoy en día, ya que salieron a la luz vulnerabilidades que permiten el tapjacking en versiones más recientes de Android como Nougat y Marshmallow.

¿Qué puedes hacer al respecto? Como usuario, es importante darse cuenta de las consecuencias de estas superposiciones y estar atento a las apps que las utilizan. A partir del nivel 23 de la API (Android 6.0 Marshmallow), esto se ha convertido en un permiso que tiene que ser concedido explícitamente por el usuario. Sin embargo, eso deja al 50% de los usuarios de Androidtodavía vulnerables. Todavía puedes comprobar qué aplicaciones hacen uso de este permiso en los ajustes, en "Mostrar sobre otras aplicaciones".

Como desarrolladores, depende de nosotros asegurarnos de que las acciones del usuario se realicen con pleno conocimiento y consentimiento del mismo. Android proporciona un ajuste para sus vistas que hace precisamente eso, llamado filterTouchesWhenObscured. Cuando está activado, el framework descartará los toques que se reciban siempre que la ventana de las vistas esté oscurecida por otra ventana visible. Es tan simple como eso, establece filterTouchesWhenObscured a true, y tu aplicación estará a salvo del tapjacking.

Buena suerte y hasta la próxima semana.

A veces es esencial que una aplicación pueda verificar que una acción se realiza con el pleno conocimiento y consentimiento del usuario, como conceder una solicitud de permiso, realizar una compra o hacer clic en un anuncio. Lamentablemente, una aplicación maliciosa podría intentar engañar al usuario para que realice estas acciones, sin saberlo, ocultando el propósito de la vista.

https://developer.android.com/reference/android/view/View.html

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.