Vulnerability-wiki

不安全数据存储漏洞(Insecure Data Storage Vulnerability)

1. 漏洞概述

不安全数据存储漏洞 是指应用程序在本地存储敏感数据(如用户名、密码、Token、个人隐私信息、加密密钥等)时,未采取安全的保护措施,导致数据可能被未经授权的人员获取、分析或篡改。

常见于:


2. 漏洞成因

  1. 明文存储敏感信息
    • 直接以明文保存密码、API 密钥、Token、隐私数据。
  2. 弱加密或错误加密
    • 使用弱算法(MD5、SHA1、RC4 等)或错误的加密实现(硬编码密钥、ECB 模式)。
  3. 存储位置不安全
    • 将敏感数据存放在易被访问的位置(如 Web 根目录、公共文件夹)。
  4. 日志与缓存泄露
    • 在日志文件、Crash Dump、缓存中无意记录敏感数据。
  5. 权限控制不当
    • 数据文件权限过宽(如 777 权限),导致低权限用户可访问。
  6. 缺乏数据生命周期管理
    • 过期数据、临时数据未及时清理。

3. 攻击方式

攻击方式 描述
本地文件读取 攻击者读取应用的配置文件、数据库、缓存文件获取敏感信息。
逆向工程与提取 反编译应用或分析固件,提取硬编码密钥或凭据。
日志分析 从日志文件中提取口令、会话令牌等信息。
越权访问 利用错误的文件权限访问敏感数据。
物理攻击 从设备存储芯片中直接提取数据(IoT、移动端)。

4. 典型案例

  1. Android 应用明文存储 Token
    • SharedPreferences 或 SQLite 数据库中明文保存会话令牌,被 Root 用户或恶意应用读取。
  2. Web 服务器泄露配置文件
    • 服务器误配置导致 .envconfig.php 可被直接下载,暴露数据库密码。
  3. 日志中泄露密码
    • 应用调试日志记录了用户登录请求的明文密码。
  4. IoT 设备固件硬编码密钥
    • 固件中存放了云端 API 密钥,被逆向分析后批量利用。

5. 危害


6. 防御与缓解措施

  1. 加密存储敏感数据
    • 使用强加密算法(AES-256、RSA)和安全模式(CBC/GCM)。
    • 密钥应安全存储(密钥管理服务、硬件安全模块 HSM)。
  2. 最小化存储
    • 不在本地存储长期有效的敏感数据。
    • 使用一次性 Token 或短期有效凭据。
  3. 安全存储位置
    • 移动端使用安全存储机制(Android Keystore、iOS Keychain)。
    • 服务器端将配置文件放在非 Web 可访问目录。
  4. 访问控制与权限限制
    • 限制文件访问权限(最小权限原则)。
  5. 日志脱敏
    • 日志中隐藏或加密敏感字段。
  6. 数据生命周期管理
    • 定期清理临时文件、缓存与过期数据。

7. 检测方法


8. 总结

不安全数据存储漏洞往往源于开发人员为方便实现而忽视安全要求
安全设计应遵循 “不存储则最安全,必须存储则必须加密” 的原则,并配合安全的密钥管理、访问控制、数据清理机制,以减少数据泄露风险。