OWASP Top 10漏洞解析(7)- Identification and Authentication Failures

举报
gentle_zhou 发表于 2024/05/12 00:38:47 2024/05/12
【摘要】 确认用户的身分、认证、会话(session)管理对于防止与认证相关的攻击来说是至关重要的。

Web应用程序安全一直是一个重要的话题,它不但关系到网络用户的隐私,财产,而且关系着用户对程序的新人。随着Web应用程序功能持续增加,复杂性不断提高,这些程序也面临着越来越多的安全威胁和挑战。

为了帮助这些应用程序的开发团队和安全人员了解和防范这些威胁,提高安全意识,编写更安全的代码,OWASP(Open Web Application Security Project,开放式Web应用程序安全项目)发布了一份标准指南,称为OWASP Top 10。

这是一份关于Web应用程序安全风险的标准指南,它基于全球范围内的安全专家和数据提供者的共识,列出了当前最严重、最关键的10种Web应用程序安全风险,并提供了相应的防范措施和建议。OWASP Top10 每隔几年会更新一次(目前已经发布了六个版本,分别是2004年、2007年、2010年、2013年、2017年和2021年),最新的版本是在2021年发布的OWASP Top10:2021。

已解析的OWASP漏洞

  1. OWASP Top 10漏洞解析(1)- A1:Broken Access Control 访问控制失效:https://bbs.huaweicloud.com/blogs/400993
  2. OWASP Top 10漏洞解析(2)- A2:Cryptographic Failures 加密机制失效:https://bbs.huaweicloud.com/blogs/405125
  3. OWASP Top 10漏洞解析(3)- A3:Injection 注入攻击:https://bbs.huaweicloud.com/blogs/407990
  4. OWASP Top 10漏洞解析(4)- A4:Insecure Design 不安全的设计:https://bbs.huaweicloud.com/blogs/414812
  5. OWASP Top 10漏洞解析(5)- A5:Security Misconfiguration 安全配置缺陷: https://bbs.huaweicloud.com/blogs/420057
  6. OWASP Top 10漏洞解析(6)- A6:Vulnerable and Outdated Components:https://bbs.huaweicloud.com/blogs/424642

“认证及验证机制失效”缺陷详情

该缺陷曾经被称为"Broken Authentication",现在被叫做“认证及验证机制失效”,包含了与识别失败相关的CWE,并且从之前的第二名跌落到现如今第七名。可以这么说,确认用户的身分、认证、会话(session)管理对于防止与认证相关的攻击来说是至关重要的。

image.png

常见的“认证及验证机制失效”缺陷类型

如果应用程序存在以下情况,则可能有认证的漏洞:

  1. 允许自动化的攻击(比如credential stuffing),当攻击者拥有有效的用户名和密码的列表
  2. 允许暴力或其他自动化的攻击
  3. 允许默认的,脆弱的、或则常见的密码,比如"Password1"或"admin/admin"
  4. 使用脆弱或无效的认证恢复和忘记密码的流程,比如不安全的“只是相关的答案”
  5. 使用明码、加密或脆弱哈希算法的形式来存储密码数据
  6. 缺失或使用无效的多因素认证(multi-factor authentication)
  7. 在URL中泄露了session 标识符(session identifier)
  8. 成功登录之后重复使用了session 标识符
  9. 没有正确地注销session ID。在登出或则一段时间不活跃的时候,用户的session或则认证token(一般是单次登录SSO token)没有被合适的注销。

如何防止该缺陷的发生

落实以下几种方法,可以防止该缺陷的发生:

  • 在可能的情况下,实施多因素认证(multi-factor authentication)来防止自动化认证撞库攻击、暴力破解、以及被偷窃的认证信息被重复利用的攻击。
  • 不要交付或或部署任何默认的认证,特别是给管理者用户使用的。
  • 实现弱密码的检查,比如测试新建或更改的密码是否存在于TOP 10000最差密码名单。
  • 将密码长度、复杂度、和轮换政策与NIST(国家标准和技术机构)的800-63b中“第 5.1.1 节-被记忆的秘密或其他现代化基于证据的密码政策”保持一致。
  • 对所有结果使用相同的讯息回应,确保注册、认证资讯恢复、以及 API 路径能够抵御帐号列举攻击(account enumeration attacks)。
  • 限制或增加失败登入尝试的延迟。记录所有失败并在检测到撞库、暴力破解或其他攻击时发出告警。
  • 使用一个服务器端、安全、内置的session管理器,在登录后会生成一个新的随机的高混乱度(high entropy)的session ID。Session 识别符不应该出现在URL里,应该是被秘密存储,并且在登出、限制和超时后需要被失效处理。

举个栗子

场景1

使用已知密码列表的认证撞库攻击是一种常见的攻击方式。假设一个应用程序没有实施针对自动化威胁或撞库攻击的保护,那么在在这种情况下,应用程序会被利用为一个密码预报工具来判断认证信息是否有效。

场景2

大多数的认证攻击是因为持续使用密码作为唯一的认证因素。一旦我们考虑最佳实践、密码轮换、以及复杂度要求,就会鼓励用户使用和重复使用弱密码。建议组织可以按照 NIST 800-63 停止这些做法并使用多因素认证。

场景3

应用程序的会话超时没有被设定正确。一个用户使用了公用电脑来连接到应用程序时,用户没有选择"登出"而是简单的关闭浏览器分页之后就离开了;而一个攻击者在一小时后使用了同一个浏览器,而前一个用户的信息仍然处于通过认证的状态。

参考链接

  1. https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。