跳过内容

MASTG-TEST-0262: 引用未排除敏感数据的备份配置

概述

此测试通过分析应用程序的 AndroidManifest.xml 和备份规则配置文件,验证应用程序是否正确地指示系统从备份中排除敏感文件。

“Android 备份”可以通过 自动备份(Android 6.0(API 级别 23)及更高版本)和 键值备份(Android 2.2(API 级别 8)及更高版本)实现。 自动备份是 Android 推荐的方法,因为它默认启用,无需任何额外工作即可实现。

要在使用自动备份时排除特定文件,开发人员必须在 exclude 标签中显式定义排除规则。

  • data_extraction_rules.xml(对于使用 android:dataExtractionRules 的 Android 12 及更高版本)
  • backup_rules.xml(对于使用 android:fullBackupContent 的 Android 11 或更低版本)

cloud-backupdevice-transfer 参数可分别用于从云备份和设备到设备传输中排除文件。

键值备份方法要求开发人员设置 BackupAgentBackupAgentHelper 并指定应备份哪些数据。

无论应用程序使用哪种方法,Android 都提供了一种启动备份守护程序来备份和恢复应用程序文件的方法。 您可以使用此守护程序进行测试,并启动备份过程和恢复应用程序的数据,从而验证从备份中恢复了哪些文件。

步骤

  1. 使用 从 AndroidManifest 获取信息 获取 AndroidManifest.xml 文件。
  2. AndroidManifest.xml 中搜索 allowBackup 标志。
  3. AndroidManifest.xml 中搜索 fullBackupContent 属性(对于 Android 11 或更低版本)或 dataExtractionRules 属性(对于 Android 12 及更高版本)。
  4. 检索 backup_rules.xmldata_extraction_rules.xml 文件。

观察

输出应明确显示

  • allowBackup 标志是否设置为 truefalse。 如果未指定该标志,则默认将其视为 true
  • AndroidManifest.xml 中是否存在 fullBackupContent 和/或 dataExtractionRules 属性。
  • backup_rules.xmldata_extraction_rules.xml 文件的内容(如果存在)。

评估

如果应用程序允许备份敏感数据,则测试失败。 具体来说,如果满足以下条件

  • AndroidManifest.xml 中的 android:allowBackup="true"
  • 未在 AndroidManifest.xml 中声明 android:fullBackupContent="@xml/backup_rules"(对于 Android 11 或更低版本)
  • 未在 AndroidManifest.xml 中声明 android:dataExtractionRules="@xml/data_extraction_rules"(对于 Android 12 及更高版本)
  • backup_rules.xmldata_extraction_rules.xml 不存在,或者不排除所有敏感文件。

缓解措施

演示

MASTG-DEMO-0034:使用 semgrep 备份和恢复应用程序数据