OASAM-LEAK-002: Information Leak to log files

Descripción
Es posible almacenar información en los logs de android mediante las siguientes funciones destinadas a tal efecto:
1. Log.v(). Para almacenar información extendida.
2. Log.d(). Para almacenar información de depuración.
3. Log.i(). Para almacenar información básica.
4. Log.w(). Para almacenar información acerca de advertencias.
5. Log.e(). Para almacenar logs de errores.
No es recomendable almacenar información sensible en los logs del dispositivo debido a que cualquier aplicación con el permiso “READ_LOGS” podría acceder a los mismos.


Riesgos
Cualquier aplicación con acceso a los logs podría tener acceso a la información sensible almacenada en los mismos.


Recomendaciones
Se recomienda almacenar la información sensible en lugares a los que solo el aplicativo pueda acceder, y preferentemente, cifrar dicha información. 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/util/Log.html
2. http://developer.android.com/reference/android/Manifest.permission.html#READ_LOGS
3. http://developer.android.com/guide/topics/data/data-storage.html
4. Flaw 1 de “42+ Best practices in secure mobile development for iOS and Android”
5. Flaw 32 de “42+ Best practices in secure mobile development for iOS and Android”
6. DRD04-J. Do not log sensitive information - https://www.securecoding.cert.org/confluence/display/java/DRD04-J.+Do+not+log+sensitive+information