OASAM-LEAK-005: Information Leak to IPC

Descripción
Es posible almacenar información en los Intents a través de las funciones putExtra() y putExtras() de la clase Intent, así como a través de la URI en los parámetros a través del método GET mediante la función parse() de la clase URI. No es recomendable enviar información sensible sin cifrar a través de Intents Implicitos debido a que no se conoce, a priori, que aplicación manejará dicha información


Riesgos
Una aplicación no legítima podría acceder a los datos sensibles mediante la interceptación del Intent.


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
2. Flaw 32 de “42+ Best parctices in secure mobile development for iOS and Android”
3. DRD03-J. Do not broadcast sensitive information using an implicit intent - https://www.securecoding.cert.org/confluence/display/java/DRD03-J.+Do+not+broadcast+sensitive+information+using+an+implicit+intent