OASAM-CONF-011: Improper DataBase permissions

Descripción

La creación de bases de datos con el permiso “MODE_WORLD_READABLE” permite la lectura global de dicha base de datos, por lo que no se recomienda su uso salvo que sea un fichero que no exponga información sensible. De la misma manera, se recomienda evitar cuando sea posible establecer a la base de datos el permiso “MODE_WORLD_WRITABLE”.
A continuación podemos ver un ejemplo de declaración de fichero peligrosa:
                SQLiteDatabase myWorldReadDB = openOrCreateDatabase("Contacts", MODE_WORLD_READABLE, null);

Riesgos

Establecer permisos de lectura global expone la información contenida en un fichero. Si se le proporciona el permiso de escritura, cualquier aplicación podría modificar el contenido de dicho fichero, aumentando la superficie de ataque.

Recomendaciones

Se recomienda crear ficheros con permisos de lectura o escritura global solo en el caso de ser estrictamente necesario.
En general, para almacenar datos, se deben seguir las siguientes directivas:
1. Shared Preferences. Para almacenar opciones en forma de pares de valores
2. Internal Storage. Para almacenar datos en la memoria del dispositivo, por defecto este tipo de almacenamiento no es accesible a terceras aplicaciones
3. External Storage. Para almacenar datos en sitios compartidos por todas las aplicaciones del dispositivo, como las tarjetas SD.
4. SQLite Database. Para almacenar datos en BBDD SQLite. Por defecto este tipo de bases de datos no son accesibles a terceras aplicaciones.
5. Network Connection. Para almacenar datos en servicios a través de la red. En estos casos se recomienda extremar las precauciones y utilizar métodos de cifrado.


Referencias

1. http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html