La última semana de julio tuvo lugar una de las conferencias más importantes de ciberseguridad en el mundo: DEF CON, que año a año convoca a miles de aficionados a la materia para participar y conocer las últimas investigaciones. Algunos integrantes del Laboratorio de ESET Latinoamérica asistimos a las diferentes charlas brindadas a lo largo de cuatro intensas –y algo caóticas– jornadas.
Entre todas las charlas que llamaron mi atención, una en particular creo que puede ser de especial relevancia para aquellos usuarios móviles que utilicen gestores de contraseñas para Android. Estoy hablando de la ponencia titulada “Bypassing Android Password Manager Apps Without Root” presentada por Stephan Huber y Siegfried Rasthofer de Fraunhofer SIT.
A lo largo de la exposición, los investigadores pusieron en evidencia las fallas de seguridad en las aplicaciones de gestión de contraseñas más descargadas desde la Google Play Store, incluyendo errores garrafales en el esquema de seguridad. A continuación, te contaré un poco más sobre las conclusiones de esta investigación.
Sobre la investigación
Para basar su análisis, los investigadores eligieron varios gestores de contraseñas de entre los más descargados de la tienda oficial, incluyendo aplicaciones como Keeper, Keepsafe, 1Password, Dashlane, Lastpass, Avast, MyPasswords, F-Secure y PasswordManager.
Al momento de concluir el estudio, más de una veintena de vulnerabilidades –muchas de ellas críticas– habían sido encontradas en las apps analizadas. Para entender el alcance de estos fallos, debemos tener en cuenta que la cantidad de descargas de algunas de estas apps oscila entre los 10 y 50 millones de usuarios.
Huber y Rasthofer dividieron la naturaleza de las fallas encontradas en dos grupos: las vulnerabilidades relacionadas con el proceso de extracción de claves y aquellas relacionadas directamente con errores en el sistema de cifrado.
En la primera categoría se encuentran comportamientos como los que se detallan a continuación:
- Posibilidad de hacer un backup de los archivos en el almacenamiento interno de la aplicación mediante ADB.
- Posibilidad de realizar ataques MITM.
- Existencia de un navegador personalizado que permite acceso a otros ficheros del sistema de archivos, como ser las Preferencias Compartidas de la aplicación.
- Posibilidad de realizar ataques residuales: esto es instalar una aplicación maliciosa que, luego de desinstalar la aplicación legítima, pueda acceder mediante el Account Manager a las bases de datos residuales que continúan en los servicios del sistema y que contienen las contraseñas de descifrado.
En cuanto a los errores de cifrado, algunas de las falencias encontradas se listan seguidamente:
- Contraseñas en texto plano.
- Claves simétricas hardcodeadas.
- Algoritmos criptográficos personalizados con errores de implementación que permitirían a un atacante llegar a recuperar las claves de descifrado.
- Algoritmos de ofuscación fácilmente reversible.
De hecho, uno de los escenarios de ataque exhibidos durante la conferencia demostró un esquema de seguridad tan laxo que permitía a un atacante resetear la contraseña maestra simplemente robando el teléfono y utilizando las configuraciones de la aplicación sin mayores problemas (asumiendo que la dirección de correo asociada al gestor de contraseñas podía accederse desde algún gestor de correo en el mismo celular, y así sortear el doble factor de autenticación).
¿Cómo pueden esquivarse estos errores de diseño?
En principio, para solucionar algunas de las fallas expuestas a lo largo de la presentación, los oradores recomendaron seguir los siguientes consejos de diseño seguro:
- Utilizar el KeyStore de Android para el almacenamiento de las claves de cifrado.
- Utilizar procesos de derivación de claves (por ejemplo, PBKDF2 o bcrypt).
- No usar claves estáticas.
- Remitirse a algoritmos de cifrado conocidos como AES/CBC o AES/GCM.
- Desactivar la etiqueta de backup en el manifiesto.
- No guardar contraseñas en texto plano.
- No guardar la contraseña maestra en la carpeta local de la aplicación, ya que esta ubicación no es segura.
Esta charla expuso la importancia de realizar un correcto diseño de seguridad, especialmente al momento de desarrollar aplicaciones tan sensibles como aquellas que centralizan la totalidad de nuestras contraseñas.
Además, nos recuerda que, como usuarios, debemos estar atentos a las vulnerabilidades que puedan existir no solo en el sistema operativo, sino también en todas las aplicaciones que instalamos y utilizamos diariamente.
Más información en nuestra guía gratuita de seguridad para móviles: