OWASP 十大信息安全主题

  1. 注入攻击 (Injection)
  2. 无效身份认证(Broken Authentication
  3. 敏感信息泄漏(Sensitive Data Exposure)
  4. XML外部处理器漏洞(XML External Entities (XXE))
  5. 无效存取控管(Broken Access Control)
  6. 错误设置安全系统(Security Misconfiguration)
  7. 跨站攻击(Cross-Site Scripting (XSS))
  8. 不安全的反序列化漏洞(Insecure Deserialization)
  9. 使用已有漏洞元件(Using Components with Known Vulnerabilities)
  10. 日志和监控不足风险(Insufficient Logging and Monitoring)

敏感信息泄漏

许多网站和API没能很好的保护敏感信息,像金融,医疗,个人信息等等。攻击者可以通过窃取,篡改这些数据来进行信用卡诈骗,身份盗用,和 其他犯罪。敏感信息泄漏大多由于没有额外数据加密保护,像是没有在服务器端和传输过程中做加密保护,尤其是在和浏览器交换数据的过程。

了解敏感信息泄漏

在过去几年,敏感信息泄漏在网络安全中造成的最严重的影响。最常见的安全疏失就是没有加密,或者没有按照安全准则加密敏感信息。像是在密钥的产生和管理, 使用不安全算法,协议,网络等等,尤其是使用弱哈希密码加密存储数据。

敏感信息泄漏的威胁可能来自外部和内部。外部攻击者往往不会直接暴力解密,而是会在数据传输,与客户浏览器交互的过程中拦截,窃取明文, 然后对加密 系统攻击。内部威胁主要是有些员工运用权限漏洞直接下载敏感数据,如果数据只是在服务器端加密,没有多层加密的话,下载过程数据会自动解密,员工就拿到的 敏感信息的明文。

敏感信息一般包括个人身份确认信息,医疗资料,密码,私人信息,信用卡,还有一些法律要求管制的数据等等。 敏感信息泄漏不仅仅关乎经济,信用损失,还有伴随的法律责任。 所以对于敏感信息,要求在存储和传输的过程中都要额外加密保护。至少要考虑下面的具体问题:

  • 数据传输过程中是否使用了非加密,非安全的协议, 像http, SMTP, 和 ftp

  • 外部网络数据传输过程中是否一直是加密的,例如负平衡和应用前后台间的数据传输

  • 敏感数据是否有备份

  • 加密算法是否符合最近的安全标准,代码中是否有使用太老或者弱的加密算法

  • 是否使用了默认加密算法,是否使用了弱的密钥,是否重用的密钥,是否有定期翻转密钥

  • 与客户端数据交互的时候,是否强制使用安全加密通信

  • 敏感信息有没有明文暴露在应用中, 或者日志中

案例

案例一

一个应用使用数据库自动加密工具去加密信用卡号。当发生SQL注入攻击时候,数据库会自动解密数据,这样攻击者会直接得到信用卡号明文。

案列二

网站不强制要求使用TLS,并且支持弱的加密通信。在非安全的网络环境中,攻击者把https降级到http,通过拦截,窃取用户session令牌 完成盗用其他用户信息,进行违法行为。

案例三

存储密码的数据库使用非加盐的哈希码。一旦攻击者获得了这些数据,非加盐的哈希码可以通过彩虹表破解的。 对于一些简单快速生成的哈希码,即使是加盐的, 也可能通过GPUs进行暴力破解的。

预防

除了以上提到的问题和案例,还要注意以下方面:

  • 敏感信息通过应用进行单独保存,处理,传输,防止内部人为下载数据

  • 设置敏感信息访问权限,并且时时监控访问

  • 非必要情况,不要存储敏感数据

  • 即使清除过了保存时限的敏感数据

  • 保证敏感数据在服务器端加密。保证使用最新的安全加密算法,协议,密钥保护,密钥翻转

  • 保证敏感数据在传输过程中使用安全通信协议,像TLS加前向保密性(perfect forward secrecyPFS), 强制使用HTTP严格传输安全(http strict transport security

  • 禁止缓存含有敏感数据的响应

  • 使用强加盐密码哈希加work-factor(delay factor), 像 Argon2, scrypt, bcrypt, 和 PBKDF2 等等