OASAM-LEAK-004: Information Leak to Network

Descripción
Para enviar datos a la red es necesario tener el permiso “android.permission.INTERNET”. Una aplicación con dicho permiso puede enviar información a la red mediante multitud de librerías, las más comunes son java.net.* y android.net.* No es recomendable enviar información sensible sin cifrar a través de la red debido a que un atacante podría obtenerla sniffando el tráfico de red.


Riesgos
Un atacante podría tener acceso a la información sensible enviada a la red sin cifrar mediante sniffing.


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/guide/topics/data/data-storage.html#filesExternal
2. http://developer.android.com/guide/topics/data/data-storage.html
3. OWASP Top Ten Mobile Risk 3: Insufficient Transport Layer Protection
4. Flaw 32 de “42+ Best parctices in secure mobile development for iOS and Android”
5. http://developer.android.com/training/basics/network-ops/managing.html