¿Es un ataque plausible atacar un administrador de contraseñas en Android con acceso de root?

3

Hay una aplicación de administrador de contraseña para Android que estoy considerando usar, que lee un formato de base de datos para un administrador de contraseña de escritorio popular. Hay una parte de esta aplicación que me está dando una pausa; Me he acercado al autor sobre el tema, pero el autor no parece muy preocupado por ello. Quiero asegurarme de que no solo estoy siendo paranoico.

Para usar esta aplicación, le das la contraseña maestra para tu base de datos de contraseñas. La aplicación crea una clave de dos partes combinando un PIN de 4 dígitos con una clave aleatoria de 256 bits almacenada en la nube de Google datos de aplicación basados en datos . Esta clave se utiliza para cifrar la contraseña maestra localmente. Cuando utiliza la aplicación, ingresa el PIN, la aplicación recupera la clave basada en la nube y utiliza ambas para descifrar la contraseña maestra y desbloquear la base de datos. No hay otras opciones para desbloquear la base de datos. La clave basada en la nube nunca se almacena en el dispositivo, solo se utiliza en la memoria. La contraseña maestra cifrada solo se almacena en el dispositivo, nunca se carga en la nube.

Estoy dispuesto a darle al autor el beneficio de la duda aquí y asumir que la clave se genera de manera segura, y por el bien del argumento le daré a Google el beneficio de la duda y asumiré que esta aplicación es realmente la única parte Alguna vez le darán los datos a. Sí, sé que esto puede no ser una suposición realista, pero un Google malvado no está alto en mi lista de preocupaciones. Si estas suposiciones se mantienen, entonces mientras mi teléfono esté seguro, solo la aplicación en mi teléfono puede acceder directamente a la clave de la nube, y por lo tanto solo la aplicación en mi teléfono puede descifrar mi contraseña maestra.

Sin embargo, pensé en este escenario:

  1. El atacante roba el teléfono.
  2. ¡Oooh, mira! Una base de datos de contraseñas! Drat ... ¡está bloqueado!
  3. El teléfono raíz del atacante.
  4. Attacker lanza la aplicación de administrador de contraseñas.
  5. El atacante ingresa un solo PIN al azar.
  6. La aplicación descarga una clave basada en la nube.
  7. El atacante usa los privilegios de root obtenidos anteriormente, para volcar la memoria de proceso para la aplicación.
  8. El atacante lee una clave basada en la nube desde el volcado de memoria.
  9. Las combinaciones de PIN / clave de nube de fuerzas brutas del atacante están fuera de línea.
  10. La base de datos de contraseñas se desbloquea en milisegundos o menos.

¿Tengo razón para preocuparme por este ataque, o es improbable / prevenible de alguna manera? En este momento, es lo único que me impide probar la aplicación. No soy un objetivo especialmente valioso ni nada.

Una pregunta de seguimiento: Estoy tratando de convencer al autor para que agregue una opción NO para almacenar la contraseña maestra , y solo para pedirla cada vez que abro la aplicación. Suponiendo que la contraseña es segura (uso una frase de 7 palabras elegidas al azar, con dados, de un diccionario de copia impresa sin compilar), y suponiendo que la contraseña nunca se almacena en cualquier lugar, probablemente esto mantendría mis contraseñas seguras de un atacante que obtiene mi teléfono?

Sé que el acceso de root en un teléfono puede atacar cualquier administrador de contraseñas en ejecución y desbloqueado , pero en ese caso, simplemente necesito (a) no rootear mi teléfono, (b) tener cuidado no instalar malware, y (c) bloquear cuidadosamente mi base de datos después de su uso. Sin embargo, para esta aplicación, no parece haber nada que pueda hacer para evitar el ataque, a menos que me dé cuenta inmediatamente de que falta mi teléfono y de inmediato elimine la clave basada en la nube.

    
pregunta Ben 06.04.2016 - 17:26
fuente

3 respuestas

2

Hay una serie de mitigaciones que no estás considerando. Para responder directamente a su pregunta: Sí, siempre que un atacante tenga un alcance completo en toda la actividad del teléfono (algunos teléfonos Android son difíciles / imposibles de "rootear", por lo que no es un hecho incluso a ese nivel) podrían capturar la parte de la nube de la clave y fuerza bruta las combinaciones en poco tiempo (probablemente más de milisegundos, ya que tienen que probar y descifrar el archivo de contraseñas con cada paso, no hay un indicador mágico de que haya funcionado después de calcular la clave).

Pero, la mayoría de los administradores de contraseñas en la nube permiten la revocación remota de privilegios (es decir, no permiten que el dispositivo recupere la clave de la nube hasta que se autentique nuevamente), lo que debería ser práctico de ejecutar antes de que el atacante haga raíces en su dispositivo, ya que es muy simple hacer.

En segundo lugar, la administración de dispositivos móviles le permite borrar permanentemente el contenido de su teléfono si lo encuentra robado, nuevamente, solo es efectivo si actúa rápidamente, pero aún así debería ser posible iniciar sesión y golpear el dispositivo antes de que el atacante haya tenido oportunidad de evaluar sus opciones con atacar tu dispositivo.

Tercero, el cifrado completo del dispositivo con un pin fuerte (disponible en todas las versiones de Android durante algunos años) anularía todos los vectores de ataque de una sola vez, ya que el atacante tendría que conocer su pin para hacer cualquier cosa para el teléfono en absoluto.

    
respondido por el Jeff Meden 06.04.2016 - 18:22
fuente
1
  

¿Tengo razón para preocuparme por este ataque, o es inverosímil / prevenible de alguna manera?

El ataque es semi-plausible, asumiendo que el usuario puede pasar la pantalla de bloqueo de su dispositivo (porque si no está asegurando eso, tiene problemas más grandes). No es especialmente probable, ya que requiere:

  • su dispositivo será robado

  • para que el ladrón (o una cerca) quiera acceder al contenido del dispositivo, en lugar de simplemente restablecerlo de fábrica para poder venderlo

  • para que el ladrón (o una cerca) pase la pantalla de bloqueo

  • para que el ladrón (o una cerca) tenga la habilidad para hacer lo que usted describe

  • etc.

Por lo tanto, si es "correcto" que usted se "preocupe por este ataque" depende realmente de usted.

Estaría mucho más preocupado por la inutilidad de la aplicación sin una conexión a Internet.

  

Estoy tratando de convencer al autor para que agregue una opción NO para almacenar la contraseña maestra, sino para pedirla cada vez que abro la aplicación

Le sugeriría que use un administrador de contraseñas de código abierto existente que ya implementa esto. Eso parece ser más fácil.

  

¿es probable que esto proteja mis contraseñas de un atacante que obtiene mi teléfono?

Eso depende un poco de cómo se implementa el administrador de contraseñas.

Una persona decente utilizará un algoritmo de alargamiento de clave o de estiramiento de clave para imponer costos al intentar una frase de contraseña. Por ejemplo, uno respaldado por SQLCipher para Android usaría 64,000 rondas de PBKDF2. Eso ayuda a defenderse contra ciertos tipos de ataques (por ejemplo, las tablas arco iris IIRC) y obliga a los atacantes a pasar por la "puerta principal" (por ejemplo, la API SQLCipher) en sus intentos de fuerza bruta. El costo significa que solo puede probar unos pocos millones de contraseñas por día, y en ese caso, una frase de contraseña suficientemente larga hace que no sea práctico que alguien ingrese, al menos sin recurrir a la siempre popular $5 wrench .

En el extremo opuesto, si el administrador de contraseñas almacena su contraseña maestra en texto plano como un archivo separado, al atacante le resulta más fácil adivinar la contraseña maestra.

    
respondido por el CommonsWare 06.04.2016 - 18:00
fuente
0

[Divulgación: trabajo para AgileBits, los creadores de 1Password]

Como otros lo han señalado, hay muchas cosas que deben ir mal para que el ataque se produzca. Pero a partir de lo que describe (no he estudiado el producto con suficiente detalle para comentar algo que no sea lo que usted describe), un atacante puede terminar con algo que descifrar solo con un PIN.

Es posible que tenga un modelo de amenaza diferente al de la mayoría de los usuarios, pero su modelo de amenaza es ciertamente coherente. Para aquellos que señalan que el dispositivo debe estar bloqueado, eso es cierto, pero el diseño de un administrador de contraseñas debe anticipar que los datos almacenados en el dispositivo pueden capturarse.

Una cosa que parece ser un ataque más plausible es la autenticación requerida para recuperar la clave. Probablemente hay un secreto a largo plazo almacenado por la aplicación en el dispositivo que combinado con el PIN es necesario para autenticarse en el servidor. Por lo tanto, no veo por qué el atacante debe realizar el ataque de memoria en su dispositivo si puede obtener el secreto de autenticación secreto a largo plazo. Una vez que tengan eso, pueden intentar recuperar la clave cifrada sin necesitar nada de su dispositivo.

De nuevo, estoy comentando en base a su descripción del sistema. No he estudiado el sistema real, que muy bien puede tener defensas contra ese tipo de cosas.

De todos modos, creo que siempre debería haber una opción para solicitar su contraseña maestra cada vez que desbloquee sus datos.

    
respondido por el Jeffrey Goldberg 07.04.2016 - 19:00
fuente

Lea otras preguntas en las etiquetas