跳过内容

MASWE-0006: 敏感数据以未加密形式存储在私有存储位置

Beta 版内容

此内容处于 beta 版,仍在积极开发中,因此随时可能发生变化(例如结构、ID、内容、URL 等)。

发送反馈

概述

移动应用可能需要在私有存储位置(例如应用程序沙盒)本地存储敏感数据,这些数据可能因文件权限不正确、应用漏洞、设备漏洞或数据备份机制等原因而面临泄露风险。

敏感数据可能包括个人身份信息 (PII)、密码、加密密钥或会话令牌。

影响

  • 保密性丧失:在适当条件下,攻击者可以提取存储在应用程序沙盒内部的敏感数据,导致保密性丧失,并可能引发身份盗用或账户劫持等进一步攻击。

引入方式

  • 数据未加密存储:敏感数据以未加密形式写入应用的私有数据目录(沙盒)。
  • 硬编码加密密钥:敏感数据已加密,但密钥在应用程序内部硬编码。
  • 加密密钥存储在文件系统上:敏感数据已加密,但密钥与数据一起或存储在另一个易于访问的位置。
  • 使用的加密不足:敏感数据已加密,但加密强度被认为不足。

缓解措施

  • 如果应用程序功能不需要本地存储敏感数据,则应避免这样做,以减少此弱点的可能性和影响。例如,将 PII 保留在服务器端,在使用时进行渲染,并在注销时删除任何缓存数据。
  • 应仅使用平台硬件支持的密钥库解决方案(例如 Android Keystore 或 iOS Keychain)来存储加密密钥。
  • 对于存储其他文件和偏好设置,请使用平台提供的静态数据加密功能或采用信封加密(使用数据加密密钥 (DEK) 和密钥加密密钥 (KEK))或其他等效方法的其他技术。例如,在 Android 上使用 EncryptedFileEncryptedSharedPreferences;在 iOS 上使用 iOS Data Protection

警告

包括 Jetpack security crypto library 在内的 EncryptedFileEncryptedSharedPreferences 类已被 弃用。然而,由于官方替代方案尚未发布,我们建议在有替代方案之前继续使用这些类。

测试

MASTG-TEST-0207: 运行时存储在应用沙盒中的数据