Saltar a contenido

Insecure Shared Preferences Permissions

Permisos inseguros en Shared Preferences

Descripción

Configurar las Shared Preferences con permisos inseguros, ya sea de lectura pública (world-readable) o escritura pública (world-writable), puede exponer la información confidencial almacenada en las preferencias compartidas a lecturas o escrituras arbitrarias por parte de un atacante malicioso.

Recomendación

Las Shared Preferences son archivos XML que se utilizan para almacenar datos primitivos privados en pares clave-valor. Los tipos de datos incluyen booleanos, flotantes, enteros (ints), largos (longs) y cadenas (strings).

Las Shared Preferences nunca deben configurarse con el permiso MODE_WORLD_READABLE o MODE_WORLD_READABLE (escritura pública), a menos que se requiera explícitamente para compartir información entre aplicaciones.

En su lugar, los permisos compartidos deben tener el modo MODE_PRIVATE (modo predeterminado); este modo significa que solo la aplicación que creó las Shared Preferences puede acceder a ellas o modificarlas.

  SharedPreferences sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putString("language", "en-US");
  editor.apply();

Enlaces

Estándares

  • OWASP_MASVS_L1:
    • MSTG_PLATFORM_4
  • OWASP_MASVS_L2:
    • MSTG_PLATFORM_4
  • CWE_TOP_25:
    • CWE_276
  • GDPR:
    • ART_5
    • ART_32
  • PCI_STANDARDS:
    • REQ_2_2
    • REQ_6_2
    • REQ_6_3
    • REQ_7_3
    • REQ_11_3
  • OWASP_MASVS_v2_1:
    • MASVS_PLATFORM_1
  • SOC2_CONTROLS:
    • CC_2_1
    • CC_4_1
    • CC_6_1
    • CC_7_1
    • CC_7_2
    • CC_7_4
    • CC_7_5
  • HIPAA_CONTROLS:
    • SECURITY251
    • SECURITY221
    • SECURITY212
    • SECURITY213