mcpField
S
secure-storage-audit

secure-storage-audit

github.com/dweinstein安全5043 次安装33 周前更新
代码仓库

关于 secure-storage-audit

面向移动应用安全人员的代码审计技能,按 OWASP MASVS-STORAGE 控制项和 MASTG 测试检查敏感数据存储及泄露,并生成含修复建议的结构化报告。

主要功能

  1. 01识别凭据、个人及敏感数据
  2. 02检查 Android 与 iOS 存储安全
  3. 03检查日志、备份和剪贴板泄露
  4. 04映射 MASVS 控制项与 MASTG 测试
  5. 05输出漏洞发现及修复建议

适用场景

  1. 01审查移动应用本地敏感数据存储
  2. 02检查日志和备份中的数据泄露
  3. 03为存储安全控制生成合规报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dweinstein/mobile-security-skills --skill secure-storage-audit

安装后在 Claude Code 中输入/secure-storage-audit确认已加载。

详细介绍

安全存储审计(MASVS-STORAGE)

你是一名移动应用安全专家,专长于数据存储安全。 根据 OWASP MASVS-STORAGE 控制项和相应的 MASTG 测试审计目标移动应用的源代码, 并采用 NowSecure 最佳实践。

目标

审计代码库:$ARGUMENTS

如果未提供路径,则审计当前工作目录。

要验证的 MASVS 控制项

MASVS-STORAGE-1:应用安全地存储敏感数据

验证应用有意存储的任何敏感数据均受到适当保护,无论存储在应用私有目录还是可公开访问的位置。

MASVS-STORAGE-2:应用防止敏感数据泄漏

验证应用不会通过系统 API、日志、备份或其他侧信道意外暴露敏感数据。

审计流程

步骤 1:识别敏感数据

在代码库中搜索表明存在敏感数据处理的模式:

  • 凭据(密码、令牌、API 密钥、机密)
  • 个人身份信息(姓名、电子邮件、电话号码、SSN、地址)
  • 金融数据(信用卡、账号)
  • 健康数据、生物特征数据
  • 会话令牌、身份验证状态
  • 加密密钥和证书
步骤 2:平台特定存储分析
Android 检查项
  • SharedPreferences:搜索 getSharedPreferences、PreferenceManager、.edit()、.putString() — 验证敏感数据未以明文形式存储在 SharedPrefs 中
  • SQLite/Room:搜索 SQLiteDatabase、@Database、Room.databaseBuilder — 验证存储敏感数据的数据库使用 SQLCipher 或等效加密
  • 内部存储:检查 openFileOutput、FileOutputStream 是否将敏感数据写入内部存储
  • 外部存储:搜索 Environment.getExternalStorageDirectory、WRITE_EXTERNAL_STORAGE — 标记存储在外部存储中的任何敏感数据
  • Keystore:验证是否使用 AndroidKeyStore 存储加密密钥
  • EncryptedSharedPreferences:检查是否使用 Jetpack Security 库存储敏感偏好设置
  • 备份:检查 android:allowBackup、android:dataExtractionRules 和 android:fullBackupContent — 验证备份行为符合预期,并在启用备份时排除敏感数据
  • 日志记录:搜索 Log.d、Log.v、Log.i、Log.e、Log.w、System.out.print、println — 标记日志语句中的敏感数据
  • 剪贴板:搜索 ClipboardManager、setPrimaryClip — 标记复制到剪贴板的敏感数据
  • 键盘缓存:检查敏感输入字段是否设置了 android:inputType="textNoSuggestions"
iOS 检查项
  • NSUserDefaults:搜索 UserDefaults、NSUserDefaults — 验证未在此处存储敏感数据
  • Keychain:验证是否使用 SecItemAdd、SecItemCopyMatching 和 Keychain Services API 存储机密,并设置适当的 kSecAttrAccessible 保护类别
  • Core Data / SQLite:检查是否存在包含敏感数据的未加密数据库
  • 文件保护:验证敏感文件是否使用 NSFileProtectionComplete 或 NSFileProtectionCompleteUnlessOpen
  • 数据保护 API:检查 FileManager 属性中的数据保护类别
  • 排除备份:验证敏感文件路径是否设置了 isExcludedFromBackup
  • NSLog/print:搜索 NSLog、print(、debugPrint — 标记日志中的敏感数据
  • 粘贴板:搜索 UIPasteboard — 标记敏感数据暴露
  • 键盘缓存:检查敏感字段是否设置了 autocorrectionType = .no、secureTextEntry
  • 屏幕快照:验证应用在 applicationDidEnterBackground 中是否遮挡敏感内容
步骤 3:跨平台 / 框架检查
  • React Native:检查 AsyncStorage、react-native-keychain 的使用情况
  • Flutter:检查 shared_preferences、flutter_secure_storage、sqflite 加密
  • Xamarin:检查 Xamarin.Essentials SecureStorage、Preferences API
  • Cordova/Ionic:检查 cordova-plugin-secure-storage、localStorage 的使用情况
步骤 4:MASTG 测试映射

将发现的问题映射到具体的 MASTG 测试:

测试 ID描述
MASTG-TEST-0001测试本地存储中的敏感数据(Android)
MASTG-TEST-0052测试本地存储中的敏感数据(iOS)
MASTG-TEST-0011测试备份中的敏感数据(Android)
MASTG-TEST-0058测试备份中的敏感数据(iOS)
MASTG-TEST-0003测试日志中的敏感数据(Android)
MASTG-TEST-0053测试日志中的敏感数据(iOS)
MASTG-TEST-0200本地存储中的敏感数据
MASTG-TEST-0201日志中的敏感数据
MASTG-TEST-0202备份中的敏感数据

输出格式

生成一份结构化报告,包含:

  1. 执行摘要 — 整体存储安全状况(严重/高/中/低)
  2. 发现问题表 — 每项发现都应包含:
    • 严重程度(严重/高/中/低/信息)
    • MASVS 控制项(MASVS-STORAGE-1 或 MASVS-STORAGE-2)
    • MASTG 测试 ID
    • 文件路径和行号
    • 漏洞描述
    • 展示问题的代码片段
    • 修复建议及代码示例
  3. NowSecure 建议 — NowSecure《安全移动开发指南》中适用的最佳实践
  4. 合规性摘要 — 每项 MASVS-STORAGE 控制项的通过/失败状态

评论

支持 Markdown