Shared Preferences y SQLite en Android ¿Seguridad? (II de III)

Tal y como comenté en la primera entrada de esta serie, en ningún momento se debería usar esta información para realizar ninguna acción ilegal, como modificar fechas de expiración de aplicaciones, leer datos privados ni obtener claves de seguridad privadas de terceros. Publico estas entradas sólo con el ánimo de enseñar los problemas de seguridad que nos pueden traer asociados el desarrollar nuestras aplicaciones con un método de almacenamiento de datos determinado y el poco cuidado que ponen ciertos desarrolladores de aplicaciones a la hora de tratar datos tan sensibles como las claves públicas y privadas de nuestro servicio de almacenamiento en la nube “supuestamente” seguro, o el crear un sistema de licenciamiento de aplicaciones basado en almacenar la fecha de expiración en el propio dispositivo en lugar de hacerlo en servidores en la nube del propio desarrollador o con algún método más eficaz, como encriptando de algún modo dichos datos.

Hecha esta aclaración, insisto en que cada uno es responsable de la aplicación que le dé a esta información y que quede constancia de que puede estar incurriendo en acciones ilegales.

Volvemos al tema de la seguridad o inseguridad que obtenemos al guardar según qué datos sensibles de aplicaciones en las Shared Preferences de Android o en bases de datos SQLite.

En esta nueva entrada, vamos a ver como aplicaciones destinadas a ofrecer seguridad por ellas mismas, se vuelven vulnerables por el simple hecho de almacenar datos sensibles de una manera incorrecta.

En concreto vamos a hablar de “WatchGuard Mobile VPN”.

Es una aplicación de la compañía WatchGuard, que nos permite crear túneles VPN seguros entre nuestros dispositivos y los UTM de dicha marca. Hay que comentar que los UTM que ofertan son excelentes en su cometido y aportan una gran seguridad y posibilidad de gestión a las redes empresariales, pero no quita para que sean algo más cuidadosos con el desarrollo de aplicaciones y herramientas de servicio a los clientes.

Viendo que su finalidad en un sentido u otro es aportar seguridad, ¿por qué no almacena los datos de una manera consecuente con su cometido?

Veamos qué pasa cuando accedemos a la base de datos SQLite que utiliza “WatchGuard Mobile VPN”, con Hack App Data (aplicación explicada en la primera entrada de la serie).

imagen1 imagen2 imagen3

Como podemos observar, en la primera pantalla nos aparecen los datos de la aplicación. En la pestaña de Shared Preferences no aparece nada, ya que esta aplicación sólo almacena datos en SQLite. En la tercera pantalla, la de bases de datos, vemos que utiliza una llamada “VpnProfile”, donde se almacenan todos los perfiles de VPN que utiliza la aplicación para conectar a los distintos dispositivos UTM.

Si pulsamos sobre “VpnProfile”, accedemos a la pantalla de tablas de dicha base de datos.

imagen4

Pulsando sobre la tabla “VpnProfile”, accederemos a los registros de los perfiles que hay almacenados en la tabla.

imagen5 imagen6

Como podemos observar en los registros de la base de datos, se almacenan los nombres de perfil, dirección IP de los dispositivos UTM a los que conectar, nombre de grupo de VPN necesario para conectar, así como la contraseña para validarse en dicho grupo.

Si observamos la segunda imagen, también se almacenan los nombres de usuario y password de los clientes en texto plano, así como los ruteos que añade al PC cuando nos conectamos para poder acceder a las redes remotas a través del túnel.

Tratándose de aplicaciones y dispositivos dirigidos a aportar seguridad en nuestras comunicaciones, es un fallo de seguridad bastante importante. Por este motivo siempre recalcamos desde el punto de vista de la seguridad que los datos, siempre que se pueda, hay que almacenarlos cuando menos encriptados.

Hasta la próxima, saludos.

Deja un comentario