Skip to content

Latest commit

 

History

History
125 lines (82 loc) · 4.17 KB

File metadata and controls

125 lines (82 loc) · 4.17 KB

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

1. 漏洞概述

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

常见于:

  • Web 应用与服务器端配置(数据库、日志、配置文件)
  • 移动应用(本地存储、缓存、日志)
  • 桌面软件(注册表、配置文件、临时文件)
  • 物联网设备(固件、存储芯片、调试接口)

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. 危害

  • 账户与凭据泄露
    攻击者可直接登录系统或调用 API。

  • 数据隐私泄露
    用户个人信息、财务信息被曝光。

  • 进一步入侵与横向移动
    使用泄露的凭据攻击其他系统(凭据填充攻击)。

  • 业务破坏与伪造
    修改本地存储的配置或数据,绕过验证、制造假数据。


6. 防御与缓解措施

  1. 加密存储敏感数据

    • 使用强加密算法(AES-256、RSA)和安全模式(CBC/GCM)。
    • 密钥应安全存储(密钥管理服务、硬件安全模块 HSM)。
  2. 最小化存储

    • 不在本地存储长期有效的敏感数据。
    • 使用一次性 Token 或短期有效凭据。
  3. 安全存储位置

    • 移动端使用安全存储机制(Android Keystore、iOS Keychain)。
    • 服务器端将配置文件放在非 Web 可访问目录。
  4. 访问控制与权限限制

    • 限制文件访问权限(最小权限原则)。
  5. 日志脱敏

    • 日志中隐藏或加密敏感字段。
  6. 数据生命周期管理

    • 定期清理临时文件、缓存与过期数据。

7. 检测方法

  • 代码审计
    检查敏感数据的存储与加密实现。

  • 文件系统扫描
    搜索明文凭据、配置文件、密钥等。

  • 移动应用安全测试
    使用 adb、越狱/Root 工具访问应用数据目录分析存储情况。

  • 固件分析
    对 IoT 固件进行解包与静态分析。


8. 总结

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