2021 Owasp Top 10 逐个击破之A07:认证及验证机制失效
字数 1665 2025-08-12 11:34:16
OWASP Top 10 2021 A07: 认证及验证机制失效详解
1. 漏洞概述
认证及验证机制失效(Identification and Authentication Failures)在2021年OWASP Top 10中排名第7位,指应用程序在用户身份确认、认证和会话管理方面的缺陷导致的安全问题。
1.1 关键统计数据
- 相关CWE数量: 22个
- 最大发生率: 14.84%
- 平均发生率: 2.55%
- 最大覆盖范围: 79.51%
- 平均覆盖范围: 45.72%
- 平均加权漏洞: 7.40
- 平均加权影响: 6.50
- 出现次数: 132,195次
- 相关CVE数量: 3,897个
2. 漏洞表现形式
2.1 认证机制缺陷
- 允许撞库自动化攻击(使用已知用户名密码列表尝试登录)
- 允许暴力破解或其他自动化攻击
- 允许使用默认、脆弱或常见密码(如"Password1"、"admin/admin")
- 脆弱的密码找回机制(如不安全的"知识问答"方式)
- 密码存储不安全(明文、弱加密或弱哈希存储)
- 缺乏有效的多因素认证(MFA)
2.2 会话管理缺陷
- URL中泄露会话ID(如URL重写)
- 登录成功后未轮换会话ID
- 未正确注销会话ID(登出或闲置时未失效)
- 会话超时设置不当
- 单点登录(SSO)令牌管理不当
3. 攻击场景示例
场景1: 撞库攻击
攻击者使用已知的用户名密码列表对目标系统进行自动化尝试,系统缺乏防护措施导致攻击成功。
场景2: 密码策略缺陷
系统强制密码复杂度要求导致用户使用易记但脆弱的密码,或重复使用密码,建议遵循NIST 800-63标准。
场景3: 会话超时不当
用户在公共电脑登录后未登出直接关闭浏览器,会话未超时导致后续使用者可直接访问账户。
场景4: URL会话ID泄露
机票预订系统在URL中包含会话ID,用户分享链接时无意泄露会话,导致他人可冒用身份和支付信息。
场景5: 密码数据库泄露
系统密码数据库被入侵,存储的密码未加密或使用弱哈希,导致所有用户密码泄露。
4. 防御措施
4.1 认证机制加固
- 实施多因素认证(MFA): 防止自动化攻击和凭据重用
- 禁用默认凭证: 特别是管理员账户
- 密码策略:
- 检查新密码是否在前10,000个最差密码列表中
- 遵循NIST 800-63b标准(密码长度、复杂度、轮换政策)
- 统一错误响应: 防止通过错误信息枚举有效账户
- 限制登录尝试:
- 增加失败尝试后的延迟
- 记录失败日志并设置攻击告警
4.2 会话管理加固
- 安全的会话ID生成:
- 使用服务器端、安全的会话管理器
- 登录后生成新的高熵随机会话ID
- 会话ID保护:
- 不在URL中传输
- 安全存储(如HTTP-only, Secure Cookie)
- 会话生命周期控制:
- 登出后立即失效
- 闲置超时后自动失效
- 限制会话持续时间
4.3 其他安全措施
- 密码存储安全:
- 使用强哈希算法(如bcrypt, PBKDF2, Argon2)
- 加盐处理
- 传输安全:
- 所有认证相关通信使用TLS/SSL
- 身份验证cookie设置Secure和HttpOnly属性
- 功能隔离:
- 区分公共区域和受限区域
- 受限区域实施更严格的安全控制
5. 验证方法
检查应用程序是否存在以下问题:
- 认证凭证是否使用强哈希或加密存储
- 认证凭证是否可猜测或通过弱账户管理功能重置
- 会话ID是否暴露在URL中
- 会话ID是否易受固定攻击
- 会话是否有超时机制,用户能否安全登出
- 成功登录后会话ID是否轮换
- 认证凭据是否仅通过TLS传输
6. 最佳实践总结
- 账户锁定策略: 多次失败尝试后锁定账户
- 密码有效期: 强制定期更换密码
- 账户禁用功能: 安全事件后可快速禁用账户
- 强密码要求:
- 至少8位字符
- 包含大小写字母、数字和特殊字符
- 加密传输: 不在网络中明文传输密码
- 会话保护:
- 加密会话cookie内容
- 限制会话寿命
- 避免未经授权访问会话状态
通过实施这些措施,可以显著降低认证和会话管理相关的安全风险,保护用户账户和系统安全。