OWASP 十大网站安全风险 (二):无效身份认证
OWASP 十大信息安全主题
- 注入攻击 (Injection)
- 无效身份认证(Broken Authentication)
- 敏感信息泄漏(Sensitive Data Exposure)
- XML外部处理器漏洞(XML External Entities (XXE))
- 无效存取控管(Broken Access Control)
- 错误设置安全系统(Security Misconfiguration)
- 跨站攻击(Cross-Site Scripting (XSS))
- 不安全的反序列化漏洞(Insecure Deserialization)
- 使用已有漏洞元件(Using Components with Known Vulnerabilities)
- 日志和监控不足风险(Insufficient Logging and Monitoring)
无效身份认证
程序开发中,既要保证安全,又要有好的用户体验,身份认证,授权,和session管理很容易出现错误漏洞,攻击者可以利用这些漏洞来穿透认证检查,从而可以临时或者永久的使用其他人的账户。
了解无效身份认证
对于需要保存状态的应用程序,身份认证,授权,session管理等的设计和执行很容易出现漏洞。尤其是session管理,它是身份认证,授权等的基石,攻击者大多 会对过期令牌进行攻击。
攻击者有海量的有效用户名和密码组合,这些数据可以使用在
撞库攻击(credential stuffing attack)
默认管理员账户列表
自动暴力破解
字典攻击工具
攻击者能通过以上手段发现无效身份认证漏洞, 一般来说,攻击者只需要几个账户,或者一个管理员账户,就能侵入,破坏系统,这样可能会造成很严重的后果,例如 洗钱,盗窃身份,重要敏感信息泄漏 等等。
什么情况容易被攻击
允许撞库攻击
允许暴力破解
允许默认或者非常弱的密码,例如 “Password1” 和 “admin/admin”
在密码恢复时,使用没有保护力的问题认证, 例如使用常识知识类的问题
使用简单,弱的加密密码,例如Base64
没有使用多重要素认证(MFA)
在URL中暴露session IDs
登陆成功后没有更新session令牌
在退出登陆后,或者用户一段时间没有活动时,没有及时使session或者授权令牌失效,尤其是单点登陆系统
案例
案例一 撞库攻击(来自百度百科)
很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取用户在A网站的账户从而尝试登录B网址,这就可以理解为撞库攻击。 撞库可采用大数据安全技术来防护,比如:用数据资产梳理发现敏感数据,使用数据库加密保护核心数据,使用数据库安全运维防运维人员撞库攻击等。
案例二 授权认证攻击
曾经流行的密码最佳实践是定期更换密码,并且要求一定的复杂度。这个实践导致一些用户重复使用,或者使用固定模式的弱密码。NIST 800-63建议 停止使用上面的最佳实践,改用多重要素授权认证。
案例三 session攻击
应用程序的session timeouts设置不合理. 例如,一个用户在公共计算机上登陆一个系统,使用后,没有退出,而是关闭了浏览器然后离开了。 这样攻击者可以在这位用户之后使用这台计算机中的同一个浏览器,用户的授权仍然是有效的。
预防
首先要避免上面容易被攻击的情况。下面是一些具体措施
尽量使用多重要素认证(multi-factor authentication), 它可以预防
- 机器登陆
- 撞库攻击
- 暴力破解
- 重用丢失密码攻击
在部署过程中不要使用默认密码,尤其是管理员用户
对密码进行强弱验证,例如测试最差的一万个密码列表
遵循NIST 800-63指导原则,对密码长度,复杂度,更新频率制定计划
在注册,密码登陆,密码恢复等功能中要防止枚举攻击,保证对所有错误尝试返回同样的错误信息
限制登陆尝试次数,监控短时间内密集登陆错误,及时警报给管理员
使用服务器端的session管理,用户登陆后,产生一个高熵的随机数作为session ID,这个ID不能出现在URL里面,应该被安全的保存,并且在用户退出登陆, 空闲无活动, 或者超时的时候,注销session ID
comments powered by Disqus