Un especial Attack Surface del sistema Android (1) - Cuadro de diálogo malvado

 Introducción

Una superficie de ataque (Attack Surface) de un sistema es la suma de todos los puntos en los que un usuario autorizado ingresa datos al sistema. También puede ser utilizado por un usuario no autorizado ("atacante") para acceder al sistema. Independientemente de los campos y las direcciones profesionales, la superficie de ataque siempre se considera el núcleo del descubrimiento de vulnerabilidades. Ya sea para Web o binario, para Windows o Android, la investigación se ha centrado en cómo acceder a la superficie de ataque, analizar el código de procesamiento de datos asociado con la superficie de ataque y eliminar la superficie de ataque. En otras palabras, el descubrimiento de vulnerabilidades siempre está orientado por la superficie de ataque.
Para el sistema operativo Android y las aplicaciones, las superficies de ataque locales comunes incluyen componentes expuestos, servicio de enlace, controladores (drivers) y sockets, mientras que los remotos comunes incluyen protocolos de comunicación, formato de archivo y enlaces web. Sin embargo, algunas superficies de ataque menos conocidas se identifican en el descubrimiento de vulnerabilidades. Estas vulnerabilidades son muy interesantes e importan mucho. Algunos de ellos se discutirán en una serie. Este artículo, como el primero de la serie, analiza el cuadro de diálogo para la interacción del usuario.

Diálogo de confirmación

De acuerdo con los estándares de clasificación de vulnerabilidades para el Proyecto de código abierto de Android (AOSP) [1], las vulnerabilidades de riesgo moderado y alto se definen a continuación:
  • High: omisión local de los requisitos de interacción del usuario para cualquier desarrollador o modificación de la configuración de seguridad
  • Moderate: omisión local de los requisitos de interacción del usuario (acceso a la funcionalidad que normalmente requeriría la iniciación del usuario o el permiso del usuario)
Si se pueden eludir los requisitos de interacción del usuario durante las modificaciones de la configuración de seguridad o cualquier paso que requiera la interacción del usuario es vulnerable a las amenazas de seguridad, se considera que existe una vulnerabilidad. En este caso, el diálogo de confirmación es una superficie de ataque especial.

Bypass de la interacción del usuario

Entre todos los cuadros de diálogo de confirmación, el de realizar una llamada telefónica es especial. Los desarrolladores tienden a pasar por alto las amenazas de seguridad causadas por eludir los requisitos de interacción del usuario de este cuadro de diálogo cuando se inicia desde el exterior. Una vez existieron vulnerabilidades similares en el sistema operativo Android, por ejemplo, CVE-2013-6272 [2].
Estas vulnerabilidades también existen en la función VoIP de algunas aplicaciones de redes sociales populares. El malware puede eludir la interacción del usuario para iniciar una llamada VoIP, de modo que un atacante que recibe la llamada puede monitorear el micrófono del usuario afectado, provocando una pérdida de privacidad.
Una vulnerabilidad de este tipo existió una vez en VK.COM, una conocida aplicación de redes sociales en Rusia: omitía la interacción del usuario para iniciar una llamada VoIP a otro usuario.
La causa de la vulnerabilidad era que com.vkontakte.android.LinkRedirActivity se podía pasar a un ContentProvider, que podía designar el ID de cualquier usuario objetivo.


Cuando se inicia esta actividad, el sistema inicia directamente una llamada VoIP al usuario objetivo. En realidad, se debe diseñar un cuadro de diálogo para la confirmación del usuario antes de que el sistema inicie la llamada VoIP. Al principio, VK.COM no trató el problema como una vulnerabilidad hasta que algunos famosos expertos en seguridad en el campo del sistema operativo Android los convencieron durante un congreso de seguridad y espionaje. Luego, VK.COM corrigió la vulnerabilidad agregando un cuadro de diálogo para requerir la interacción del usuario antes del inicio de las llamadas VoIP.
Del mismo modo, Line también encontró una vulnerabilidad de este tipo, donde la interacción del usuario se omitió durante el inicio de las llamadas telefónicas de audio. Line identificó la vulnerabilidad como una omisión de autenticación y la solucionó agregando un cuadro de diálogo de interacción del usuario.

Spoofing durante la interacción del usuario

Los atacantes también pueden mostrar contenido de suplantación de identidad en el cuadro de diálogo para lograr el secuestro de clics.

CVE-2017-13242: suplantación de identidad en el cuadro de diálogo de emparejamiento de Bluetooth
Esta vulnerabilidad existió una vez en el cuadro de diálogo de emparejamiento de Bluetooth. La siguiente figura muestra un cuadro de diálogo de emparejamiento de Bluetooth normal.

Emparejamiento normal

"Angler" es el dispositivo Bluetooth que está emparejando. Sin embargo, los atacantes pueden cambiar el nombre de este dispositivo a voluntad. En este caso, ¿se producirá un impacto de seguridad en esta superficie de ataque?

Si se cambia el nombre del dispositivo Bluetooth de igual a "Angler para emparejar pero NO para acceder a sus contactos e historial de llamadas" con un carácter de nueva línea insertado después de "Angler", el cuadro de diálogo de emparejamiento de Bluetooth aparece de la siguiente manera:

Emparejamiento malvado

El nuevo cuadro de diálogo parece extraño, pero definitivamente el usuario, después de pensarlo dos veces, elegirá emparejarse con el dispositivo pero no compartir sus contactos e historial de llamadas. Como resultado, el usuario marca la casilla de verificación, que va en contra de sus expectativas pero encaja exactamente con los deseos del atacante.
Esta vulnerabilidad se solucionó en febrero de 2018 [3]. Desafortunadamente, no se tuvieron en cuenta otras interfaces Bluetooth cuando Google solucionó la vulnerabilidad. Las restricciones se establecieron solo para el archivo Strings.xml en la aplicación Configuración para evitar la entrada de nombres de dispositivos Bluetooth de pares y cambiar el contenido en el cuadro de diálogo de emparejamiento de Bluetooth a una cadena de caracteres fija.

CVE-2018-9432: suplantación de identidad en el cuadro de diálogo para acceder a contactos y mensajes SMS mediante Bluetooth
Los dispositivos Android Bluetooth también son compatibles con los protocolos Perfil de acceso a la agenda telefónica (PBAP) y Parte de la aplicación móvil (MAP), que se utilizan respectivamente para permitir que otros dispositivos accedan a sus contactos y mensajes SMS con Bluetooth. El protocolo PBAP le permite compartir los contactos de su teléfono con la unidad del automóvil con Bluetooth mientras conduce. En virtud de los protocolos PBAP y MAP, se muestra un cuadro de diálogo directamente en el teléfono móvil sin necesidad de emparejamiento, para que el usuario decida si permite el acceso a sus contactos y mensajes SMS. El cuadro de diálogo de interacción del usuario basado en PBAP se muestra en la siguiente figura:

Pbap normal

Al igual que en el caso del diálogo de emparejamiento de Bluetooth, un atacante adyacente puede cambiar el nombre del dispositivo heen-ras e insertar muchos caracteres de nueva línea, como se muestra a continuación:


Luego, el atacante accede a los contactos a través del protocolo PBAP y ejecuta el script nOBEX [4].


De esta forma, el cuadro de diálogo de solicitud de acceso a la agenda telefónica se actualiza de la siguiente manera:

Pbap malvado

Al comparar las dos figuras anteriores, puede ver que la información crítica en los cuadros de diálogo está oculta, mientras que la información de significados opuestos se muestra. De acuerdo con el resultado de las pruebas de simulación, los usuarios comunes generalmente decidieron elegir "Sí" y, como resultado, todos sus contactos fueron robados. Esta vulnerabilidad se corrigió en julio de 2018 [5] al filtrar los caracteres de nueva línea (\r \n) para que no se emparejen los nombres de dispositivos Bluetooth en la clase BluetoothDevice.
Cabe señalar que los atacantes también pueden inyectar de forma remota los caracteres de nueva línea en los archivos de configuración de Bluetooth. Los atacantes pueden configurar un nombre de dispositivo Bluetooth para evitar el emparejamiento Bluetooth durante la conexión Bluetooth a otro dispositivo Android. Esta vulnerabilidad [6] es similar a las dos mencionadas anteriormente y se solucionó en 2019. Desde la perspectiva de la superficie de ataque, los cazadores de vulnerabilidades generalmente tienen un impacto en la seguridad al ingresar un nombre de dispositivo Bluetooth controlable en un archivo de configuración de Bluetooth, mientras que el método descrito en este artículo ingresa el nombre del dispositivo Bluetooth en el cuadro de diálogo de emparejamiento de Bluetooth para engañar a los usuarios comunes.

Conclusión

Desde la perspectiva del ataque, el diálogo de confirmación es una superficie de ataque especial. Desde la perspectiva de la defensa, proporciona un mecanismo de seguridad crítico. Los desarrolladores deben establecer un cuadro de diálogo de confirmación para permitir que los usuarios realicen una confirmación antes de cualquier operación que pueda afectar su seguridad o privacidad, para evitar el secuestro de clics.
Cabe recalcar como recomendación final, aunque en la mayoría de dispositivos nuevos este tipo de ataque esta parchado, en el mercado android hay más de un 70% de dispositivos vulnerables a este ataque, así que amigo mío, a no ser que tengas conocimientos básicos de seguridad, desactiva tu bluetooh, no le des aceptar a cualquier cuadro de diálogo.

Referencias:











Comentarios

Entradas populares