Escribo 1) una aplicación que almacena un nombre de usuario y una contraseña en AccountManager, y 2) una aplicación de servicio de fondo separada que accede a esas credenciales para iniciar sesión en mis servidores, etc. Jugando con esto, me parece que estoy capaz de llamar a AccountManager.getPassword (cuenta) desde el Servicio (aplicación 2) para acceder al tipo de cuentas que he agregado al AccountManager usando la otra aplicación (aplicación 1).¿Qué protege las contraseñas de Android AccountManager de ser leídas por otras aplicaciones?
Debido a esto, estoy empezando a preguntarme qué detiene una aplicación maliciosa arbitraria 1) incluyendo los campos en el manifiesto para tener acceso a la administración de cuentas, y luego 2) iterar a través de todas las cuentas de un tipo particular y llamando a mAccountManger.getPassword (cuenta) en ellos. Sé que durante la instalación, aparece un cuadro de diálogo con todos los permisos que solicita una aplicación, pero no creo que podamos contar con que el usuario promedio rechace una aplicación porque solicita permisos sospechosos.
¿Hay alguna manera de evitar que se llame a getPassword en un tipo de cuenta? ¿Hay formas de proteger cuentas en el Administrador de cuentas de aplicaciones que se han otorgado muchos permisos de cuenta?