Recomendaciones de seguridad para las copias de seguridad

Categoría de OWASP: MASVS-CODE: Calidad de código

Descripción general

El objetivo de las copias de seguridad de apps es preservar los datos de los usuarios para que se puedan restablecer más adelante en un dispositivo nuevo o en caso de pérdida de datos. Las recomendaciones de seguridad existentes con respecto a las copias de seguridad de apps son variadas y varían según las versiones de Android y los fabricantes de dispositivos. El tema común es que estas recomendaciones tienen como objetivo garantizar que no se filtren datos sensibles.

El sistema de copia de seguridad estándar de Android proporciona la solución más segura, sólida y fácil para que las apps creen copias de seguridad de sus datos en la nube o transfieran datos a un dispositivo nuevo a través de la copia de seguridad automática (que está habilitada de forma predeterminada, no requiere trabajo para implementarse y también se puede extender) y la copia de seguridad de par clave-valor. Te recomendamos que uses esta solución porque almacena los datos de copia de seguridad resultantes en directorios a los que no pueden acceder otras apps de terceros, además de facilitar la encriptación en reposo, la encriptación en tránsito y las configuraciones que permiten la exclusión de datos sensibles de las copias de seguridad.

En cambio, si una app implementa una solución de copia de seguridad que no depende del sistema de copia de seguridad estándar de Android, esto podría aumentar la probabilidad de errores que generen filtraciones de datos sensibles. Entre los ejemplos de soluciones de copia de seguridad no estándar que exponen los datos del usuario a filtraciones, se incluyen las apps que ofrecen una función de "exportación" o "copia de seguridad" que crea una copia de los datos de la app en directorios que otras apps pueden leer y que, por lo tanto, es propensa a filtraciones (ya sea directamente o a través de otras vulnerabilidades).

Impacto

Seguir las recomendaciones de seguridad cuando configuras las copias de seguridad de las apps evita la posible filtración de datos sensibles que podrían incluir las copias de seguridad. Según los datos reales y las intenciones del atacante, la filtración de datos sensibles puede provocar la divulgación de información, el robo de identidad del usuario y pérdidas financieras.

Mitigaciones

Usa el sistema de copia de seguridad estándar de Android

El sistema de copia de seguridad estándar de Android siempre encripta los datos de copia de seguridad en tránsito y en reposo. Esta encriptación se aplica independientemente de la versión de Android que esté en uso y de si el dispositivo tiene pantalla de bloqueo. A partir de Android 9, si el dispositivo tiene configurada una pantalla de bloqueo, los datos de la copia de seguridad no solo se encriptan, sino con una clave que Google no conoce (el secreto de la pantalla de bloqueo protege la clave de encriptación y, por lo tanto, permite la encriptación de extremo a extremo).

En general, recuerda seguir los lineamientos de seguridad y de almacenamiento de datos.

Si tu copia de seguridad incluye datos particularmente sensibles, te recomendamos que los excluyas o, si no puedes hacerlo, que exijas la encriptación de extremo a extremo, como se describe en la siguiente sección.

Cómo excluir datos de la copia de seguridad

Puedes especificar qué datos excluir de una copia de seguridad con un archivo de reglas, que se llama backup_rules.xml de manera convencional y se coloca en la carpeta de la app res/xml. Existen algunas diferencias en la configuración de las reglas de copia de seguridad según la versión de Android que se use:

Luego, configura el archivo backup_rules.xml de acuerdo con los requisitos de persistencia de datos y seguridad de la aplicación, y sigue el formato de configuración actualizado.

El formato requerido para la configuración del archivo backup_rules.xml permite que los desarrolladores definan reglas de copia de seguridad personalizadas para las transferencias de Cloud y dispositivo a dispositivo (D2D). Si no se establece el atributo <device-transfer>, se transferirán todos los datos de la aplicación durante una migración D2D. Es importante destacar que, incluso si la aplicación de destino se orienta a Android 12 o versiones posteriores, siempre se debe especificar un archivo independiente con un conjunto adicional de reglas de copia de seguridad para dispositivos que ejecutan Android 11 (nivel de API 30) o versiones anteriores.

  • En el caso de Android 11 y versiones anteriores, agrega un atributo android:fullBackupContent al elemento <application> dentro de AndroidManifest.xml:
  • XML xml <application android:name="com.example.foo" android:fullBackupContent="@xml/backup_rules_full"> … </application>

Luego, configura el archivo backup_rules.xml según la persistencia de datos y los requisitos de seguridad de la aplicación con la sintaxis que se informa en el artículo sobre cómo crear una copia de seguridad de los datos del usuario.

Exigencia de encriptación de extremo a extremo

Si no puedes excluir datos sensibles de tu copia de seguridad, te recomendamos que requieras la encriptación de extremo a extremo, lo que significa permitir copias de seguridad solo en Android 9 o versiones posteriores, y solo cuando se configure la pantalla de bloqueo. Puedes lograr esto usando la marca requireFlags="clientSideEncryption", cuyo nombre debe cambiarse a disableIfNoEncryptionCapabilities y establecerse en true a partir de Android 12.

Si no puedes usar el sistema de copia de seguridad estándar de Android

Si no puedes usar el sistema de copia de seguridad estándar de Android, almacenar de forma segura los datos de la copia de seguridad y especificar qué datos excluir de ella es más complejo. Esto se debe especificar a nivel de código y, por lo tanto, es propenso a errores y puede generar filtraciones de datos. En esta situación, también se recomienda probar con regularidad la implementación para asegurarte de que no se haya alterado el comportamiento esperado de la copia de seguridad.

Recursos