El tapjacking regresó en Android Marshmallow y nadie se dio cuenta

Ciertos dispositivos Marshmallow son susceptibles al tapjacking, donde una aplicación superpone texto encima de un cuadro de diálogo de permiso para engañar al usuario.

Si bien a muchos de nosotros se nos hace la boca agua con el recién lanzado Android Nougat para dispositivos Nexus, la gran mayoría de los usuarios todavía utilizan Android Marshmallow. Un exploit cuya existencia está documentada desde al menos a mediados de 2015 todavía afecta a muchos dispositivos Android modernos.

Las aplicaciones maliciosas pueden grifo tus acciones en otorgándoles un permiso que usted nunca otorgó explícitamente. Así es como funciona el exploit.


El regreso del tapjacking

Imagina que abres Instagram e intentas compartir una foto que tomaste recientemente mientras estabas de vacaciones. Cuando seleccionas explorar tu galería en busca de una imagen, Instagram te pide que le concedas permiso para acceder a tu almacenamiento. Pero cuando tocas "sí", aparece un mensaje de error.

No puedes otorgar permiso de almacenamiento para Instagram porque tienes habilitada una superposición de pantalla activa, en En este caso, una de las muchas aplicaciones que tiñen tu pantalla para que puedas usar tu teléfono por la noche sin deslumbrarte. tú mismo. Este es un caso del sistema de permisos de Android

trabajando según lo previsto: para otorgar un permiso confidencial a una aplicación, debe desactivar cualquier superposición de pantalla que tenga en su dispositivo.

Secuestro de permisos de Marshmallow. Al tocar "Permitir" se mostrarán todos mis contactos.

Las aplicaciones que tienen la capacidad de dibujar sobre su pantalla podrían engañarlo para que le proporcione datos confidenciales. Por ejemplo, una superposición de pantalla podría colocar una entrada de contraseña falsa encima de una pantalla de inicio de sesión real para recopilar sus contraseñas. Un exploit como este se llama 'secuestro' y ha aparecido y ha sido parcheado en varias versiones de Android a lo largo de los años, con uno de los peores ejemplos que dura hasta Android 4.0.3. Pero recientemente, el exploit regresó con Modelo de permisos de tiempo de ejecución de Android Marshmallow.

Un desarrollador llamado Iwo Banaś creó un solicitud demostrando la hazaña. La forma en que funciona es bastante simple: cuando una aplicación muestra un cuadro de diálogo de permiso, la aplicación maliciosa que instaló mostrará una superposición del sistema para cubrir el bloque de texto del cuadro de diálogo de permiso con cualquier texto que quiere. Un usuario involuntario que haga clic en "permitir" en el cuadro de diálogo de permiso será engañado para que conceda el permiso que se le solicitó, pero cuya solicitud estaba oculta a la vista del usuario. Un exploit de este tipo frustra por completo el propósito del sistema de permisos de Android Marshmallow, desde la introducción de Se suponía que el nuevo modelo garantizaría que los usuarios solo obtuvieran permisos a los que hubieran dado su consentimiento explícito..

Ahora sé en qué estás pensando. Si Android detectara una superposición del sistema y me impidiera otorgar permisos de almacenamiento a Instagram, ¿no evitaría que se produjera este exploit? La respuesta es no, en mis pruebas parece que en ciertos dispositivos mostrar un texto superpuesto encima de un cuadro de diálogo de permiso no activa el mecanismo de seguridad. El desarrollador de la aplicación de prueba de concepto de tapjacking afirma que el exploit es eficaz porque depende de que el usuario instale una aplicación maliciosa secundaria dirigida al nivel API 22 e inferior (antes de Marshmallow). Esto se debe al hecho de que antes de Android Marshmallow, todas las aplicaciones recibían permisos durante la instalación.

Bien, entonces, si estás en Marshmallow, todo lo que debes hacer es evitar instalar cualquier aplicación en la que no confíes y que solicite permiso para dibujar una superposición, ¿verdad? Si el modelo de permisos de Android funcionara como se diseñó originalmente, estaría en lo cierto. Pero desde el descubrimiento de este exploit, incluso aplicaciones orientadas al nivel API 23 (Marshmallow) que solicitan permiso de superposición son un riesgo potencial.


¿Una brecha en el modelo de permisos?

Aplicaciones típicas que utilizan superposiciones. A través de: Medio

Si eres uno de los muchos millones de personas que utilizan Facebook Messenger para chatear con tus amigos, Entonces te has topado con una de las mejores características de Android: la capacidad de las aplicaciones para dibujar sobre otras. pantallas. ¿Qué tan genial es que puedas tener una burbuja con tu grupo de chat favorito de Facebook para seguir al usuario encima de cualquier aplicación que abra? Aunque Messenger de Facebook introdujo la idea de las "aplicaciones flotantes" en la corriente principal, el concepto existe desde hace algún tiempo en Android. Las aplicaciones han podido crear superposiciones sobre sus aplicaciones desde hace algún tiempo, gracias a la existencia de TYPE_SYSTEM_OVERLAY en el WindowManager de Android.

Menú de permisos "Dibujar sobre otras aplicaciones"

Antes de Android Marshmallow, las aplicaciones debían solicitar un permiso llamado SISTEMA_ALERT_WINDOW durante la instalación antes de que pudiera mostrar superposiciones en la parte superior de la pantalla. Pero esto cambió con la introducción del modelo de permisos de tiempo de ejecución granular de 6.0. Los usuarios ahora tendrían que otorgar permisos a las aplicaciones cuando realmente la ejecutan, lo que con suerte estimularía el promedio. usuario para proteger sus propios datos privados de aplicaciones que solicitan sospechosamente solicitudes aparentemente no relacionadas funcionalmente permisos.

Sin embargo, SYSTEM_ALERT_WINDOW no es como otros permisos. Los desarrolladores no pueden mostrar un cuadro de diálogo para solicitar mediante programación que el usuario final otorgue el permiso, como la mayoría de los demás permisos en cualquier aplicación dirigida a Marshmallow. En su lugar, debe navegar manualmente a la pantalla de configuración y habilitar el permiso usted mismo. Por supuesto, algunas aplicaciones como Facebook Messenger te ayudarán en el proceso.

Google exige esto a los desarrolladores porque consideran que el permiso es "particularmente sensible."

Permisos especiales

Hay un par de permisos que no se comportan como permisos normales y peligrosos. SYSTEM_ALERT_WINDOW y WRITE_SETTINGS son particularmente sensibles, por lo que la mayoría de las aplicaciones no deberían usarlos. Si una aplicación necesita uno de estos permisos, debe declarar el permiso en el manifiesto y enviar una intención solicitando la autorización del usuario. El sistema responde a la intención mostrando una pantalla de gestión detallada al usuario.

Teniendo en cuenta lo que sabemos anteriormente sobre el tapjacking, esto tiene sentido. Pero aquí está la cuestión. Google ni siquiera sigue sus propias reglas. ¿Las capturas de pantalla de Facebook Messenger que te guían a través del proceso de otorgarle el permiso SYSTEM_ALERT_WINDOW que te mostré arriba? Eso sólo sucede si instalas el APK desde fuera de Google Play Store. Si instala una aplicación desde Google Play Store, el El permiso SYSTEM_ALERT_WINDOW se concede automáticamente.

Archivo de manifiesto de Facebook Messenger. A la aplicación se le concede automáticamente el permiso de superposición a pesar de que su objetivo es el nivel de API 23.

Google ha sacrificado la seguridad por la comodidad

Durante mucho tiempo antes de Android Marshmallow, SYSTEM_ALERT_WINDOW se consideraba un "peligroso" permiso. Con Android Marshmallow 6.0, el permiso se cambió a firma|sistema|aplicación que es lo que inicialmente requería que los desarrolladores llevaran al usuario a la pantalla de configuración para otorgar el permiso. Pero con la versión 6.0.1 de Android, SYSTEM_ALERT_WINDOW fue modificado para que Google Play Store podría otorgar automáticamente el permisosin avisar al usuario. No nos queda claro por qué Google hizo este cambio. Los propios Google no han declarado por qué hicieron este cambio, lo cual es especialmente extraño considerando el lenguaje sobre SYSTEM_ALERT_WINDOW que todavía existe en sus páginas web.

Es posible que suficientes desarrolladores estaban enojados por los cambios iniciales en SYSTEM_ALERT_WINDOW que requerían que los usuarios otorgaran manualmente el permiso que Google cedió silenciosamente y simplemente lo otorgó a cualquier aplicación que lo solicitara. Pero al hacerlo, Google tiene Se sacrificó la seguridad por la comodidad.. Hay una razón por la que el propio Google consideró que el permiso era peligroso durante mucho tiempo: porque lo es. Y la existencia del exploit de secuestro de permisos de Marshmallow es evidencia suficiente de los peligros inherentes al otorgar automáticamente este permiso a cualquier aplicación.

Recientemente se nos ha llamado la atención sobre este exploit de tapjacking, aunque ya existe desde hace muchos meses. En nuestras pruebas internas de dispositivos entre el equipo del Portal XDA, hemos confirmado que El exploit funciona en muchos dispositivos modernos que ejecutan Android Marshmallow.. Aquí hay un resumen rápido de los dispositivos que probamos con las últimas versiones de software disponibles para cada dispositivo respectivo y si el exploit de tapjacking funciona o no. Los dispositivos marcados como "Vulnerables" son susceptibles a un exploit de tapjacking, mientras que los dispositivos marcados como "No Vulnerable" puede detectar una aplicación que muestra la superposición y solicitar que la desactive antes continuo.

  • Nextbit Robin - Android 6.0.1 con parches de seguridad de junio - Vulnerable
  • Moto X Pure - Android 6.0 con parches de seguridad de mayo - Vulnerable
  • Honor 8 - Android 6.0.1 con parches de seguridad de julio - Vulnerable
  • Motorola G4 - Android 6.0.1 con parches de seguridad de mayo - Vulnerable
  • OnePlus 2 - Android 6.0.1 con parches de seguridad de junio - No vulnerable
  • Samsung Galaxy Note 7 - Android 6.0.1 con parches de seguridad de julio - No vulnerable
  • Google Nexus 6 - Android 6.0.1 con parches de seguridad de agosto - No vulnerable
  • Google Nexus 6P - Android 7.0 con parches de seguridad de agosto - No vulnerable

Hasta ahora, esos son todos los dispositivos que pude hacer que el equipo probara. No pude encontrar ninguna correlación entre la versión del parche de seguridad y el exploit. Como puedes ver en nuestro Última discusión sobre las actualizaciones de seguridad de Android., muchas personas no están ejecutando los últimos parches de seguridad de todos modos y, por lo tanto, posiblemente sean vulnerables a este exploit y a otros que se describen en la página Boletín de seguridad de Android.


Avanzando

El servicio Tapjacking obtuvo el permiso de superposición

Le recomendamos que pruebe usted mismo este exploit en su dispositivo para ver si es vulnerable.. Hemos compilado los APK del código fuente vinculado arriba (también puedes hacerlo tú mismo) y haberlos subido a AndroidFileHost. Para probar el exploit, es necesario instalar tanto el aplicación principal de tapjacking así como su servicio de ayuda. Luego, simplemente ejecute la aplicación principal y haga clic en el botón "probar". Si un cuadro de texto flota encima del cuadro de diálogo de permiso y cuando haces clic en "permitir" aparece una lista de los contactos de tu dispositivo, entonces tu dispositivo es vulnerable al tapjacking. No se preocupe si el cuadro de texto flotante no cubre por completo el cuadro de diálogo de permisos; esta aplicación de prueba de concepto no lo es. pretende demostrar perfectamente cómo secuestrar claramente un cuadro de diálogo de permisos, sino más bien demostrar que de hecho es posible.

Esperamos que se introduzca una solución que corrija este exploit en todos los dispositivos Marshmallow y que los OEM actualicen todos sus dispositivos con el último parche de seguridad. Porque la realidad es que la mayoría de los dispositivos comprometidos tardarán muchos meses en obtener Nougat, por lo que la única forma para la mayoría Para que los usuarios se mantengan fuera de peligro es instalar los últimos parches de seguridad o tomar permisos de la aplicación de monitoreo. ellos mismos. Pero con la decisión de Google de otorgar automáticamente el permiso potencialmente peligroso SYSTEM_ALERT_WINDOW, muchos Los usuarios, sin saberlo, ejecutan aplicaciones que potencialmente podrían secuestrar sus teléfonos para otorgar permisos cada vez más peligrosos. permisos.