Varias aplicaciones populares de Android disponibles en la tienda Google Play Store son susceptibles a una vulnerabilidad asociada con la inclusión de la travesía de ruta que podría ser explotada por una aplicación maliciosa para sobrescribir archivos arbitrarios en el directorio principal de la aplicación vulnerable.
“Las implicaciones de este patrón de vulnerabilidad incluyen la ejecución de código arbitrario y el robo de tokens, dependiendo de la implementación de la aplicación”, dijo Dimitrios Valsamaras del equipo de Inteligencia de Amenazas de Microsoft en un informe publicado el miércoles.
La explotación exitosa podría permitir a un atacante tomar el control total del comportamiento de la aplicación y aprovechar los tokens robados para obtener acceso no autorizado a las cuentas en línea de la víctima y otros datos.
Algunas de las aplicaciones que se encontraron vulnerables al problema son las siguientes:
- Gestor de archivos de Xiaomi (com.mi. Android.globalFileexplorer) – Más de 1 mil millones de instalaciones
- WPS Office (cn.wps.moffice_eng) – Más de 500 millones de instalaciones
Aunque Android implementa el aislamiento asignando a cada aplicación su propio espacio de datos y memoria dedicado, ofrece lo que se llama un proveedor de contenido para facilitar el intercambio de datos y archivos entre aplicaciones de manera segura. Sin embargo, las omisiones en la implementación podrían permitir eludir las restricciones de lectura/escritura dentro del directorio principal de la aplicación.
“Este modelo basado en el proveedor de contenido proporciona un mecanismo bien definido para compartir archivos, permitiendo que una aplicación sirva comparta sus archivos con otras aplicaciones de manera segura y con un control detallado”, dijo Valsamaras.
“Sin embargo, nos hemos encontrado frecuentemente con casos en los que la aplicación consumidora no valida el contenido del archivo que recibe y, lo más preocupante, utiliza el nombre de archivo proporcionado por la aplicación servidora para almacenar en caché el archivo recibido dentro del directorio de datos interno de la aplicación consumidora.”
Esta trampa podría tener consecuencias graves cuando una aplicación servidora declara una versión maliciosa de la clase FileProvider para habilitar el intercambio de archivos entre aplicaciones, y finalmente hacer que la aplicación consumidora sobrescriba archivos críticos en su espacio de datos privado.
En otras palabras, el mecanismo se aprovecha del hecho de que la aplicación consumidora confía ciegamente en la entrada para enviar cargas arbitrarias con un nombre de archivo específico a través de un intento personalizado y explícito y sin el conocimiento o consentimiento del usuario, lo que lleva a la ejecución de código.
Como resultado, esto podría permitir que un atacante sobrescriba el archivo de preferencias compartidas de la aplicación objetivo y haga que se comunique con un servidor bajo su control para extraer información sensible.
Otro escenario implica aplicaciones que cargan bibliotecas nativas desde su propio directorio de datos (en lugar de “/data/app-lib”), en cuyo caso una aplicación malintencionada podría explotar la debilidad mencionada anteriormente para sobrescribir una biblioteca nativa con código malicioso que se ejecuta cuando se carga la biblioteca.
Después de una divulgación responsable, tanto Xiaomi como WPS Office han corregido el problema a partir de febrero de 2024. Sin embargo, Microsoft dijo que el problema podría ser más prevalente, requiriendo que los desarrolladores revisen sus aplicaciones en busca de problemas similares.
Google también ha publicado su propia guía sobre el asunto, instando a los desarrolladores a manejar adecuadamente el nombre de archivo proporcionado por la aplicación servidora.
“Cuando la aplicación cliente escribe el archivo recibido en el almacenamiento, debe ignorar el nombre de archivo proporcionado por la aplicación servidora y en su lugar utilizar un identificador único generado internamente como nombre de archivo”, dijo Google. “Si no es práctico generar un nombre de archivo único, la aplicación cliente debe sanitizar el nombre de archivo proporcionado.”