MASWE-0004: 敏感数据未从备份中排除
概述¶
iOS 和 Android 会自动将应用数据备份到云服务中,用户也可以在物理设备上创建本地备份,或者在手机之间切换时,备份会自动在数据传输过程中创建。如果开发者未能正确配置其应用处理备份的方式,并且忽略排除敏感文件,备份中就可能包含敏感的用户和应用数据。在某些情况下,云服务提供商可能无法充分保护这些备份,或者恶意攻击者可能篡改备份文件,从而可能改变应用的行为或窃取机密信息。
影响¶
- 修改应用行为:攻击者可以篡改备份中的数据,从而改变应用的逻辑。例如,他们可以修改跟踪高级功能状态的数据库,然后将修改后的备份恢复到设备上。另一个常见情况是在兑换一次性优惠券之前备份设备,之后再恢复备份,这将允许恶意攻击者多次重复使用同一优惠券。
- 机密性泄露:存储在备份中的敏感数据(例如,个人信息、照片、文档或音频文件)可能被攻击者窃取,导致隐私泄露。
- 认证材料泄露:攻击者可以窃取密码、加密密钥和会话令牌,以助长其他攻击,例如身份盗窃、账户劫持或未经授权的访问。
引入方式¶
- 自动系统备份:默认情况下,iOS 和 Android 在用户首次设置时同意后,会将应用数据备份到云端。
- 本地备份:用户可以将设备备份到本地系统(例如,笔记本电脑)。如果本地备份未加密存储或处理不当,攻击者可能会篡改这些数据。
- 设备间传输:在设备之间传输数据(例如,通过 iCloud 或 Google 的设备间迁移工具)使攻击者能够执行类似的攻击。
缓解措施¶
- 使用平台特定属性(例如 Android 的
android:allowBackup
或 带有excludeFromBackup
的BackupAgent
)将敏感文件从备份中排除。在 iOS 上,诸如NSURLIsExcludedFromBackupKey
等 API 不能保证 从备份中排除。因此,您应该改为加密您的数据。 - 将敏感数据存储在默认不包含在备份中的位置,例如 iOS 上的 Keychain 或
Library/Caches
。 - 在存储敏感数据之前对其进行加密,以确保机密性,即使数据被备份。
测试¶
MASTG-TEST-0216: 敏感数据未从备份中排除 MASTG-TEST-0262: 备份配置未排除敏感数据的引用 MASTG-TEST-0215: 敏感数据未从备份中排除