在 OWASP Top 10:2025 里,Authentication Failures 排在 A07,也就是第 7 位。它和 2021 一样保持在第 7 位,只是名字从 “Identification and Authentication Failures” 略微调整为更直接的 “Authentication Failures”。它关注的是:系统把不该被当成合法用户的人,当成了合法身份,或者让攻击者过于容易地猜解、复用、接管、绕过身份认证。
来源:OWASP Top 10:2025 Introduction
来源:A07:2025 Authentication Failures
你可以把它和 A01 区分开来:
- Authentication 是“你是谁”
- Access Control 是“你能做什么”
也就是说,A07 是“身份识别阶段就出了问题”,而不是“识别对了人但授权给多了”。
常见表现
- 允许撞库、密码喷洒、暴力破解等自动化攻击。
- 继续允许默认口令、弱口令、众所周知的口令。
- 注册或改密时允许使用已泄露密码。
- 找回密码流程过弱,比如仍然依赖知识问答。
- 没有 MFA,或者 MFA 的回退机制太弱。
- Session ID 暴露在 URL、隐藏字段或其它客户端可控位置。
- 登录后不更换 Session ID,导致 Session Fixation。
- 注销、空闲超时、绝对超时没有正确让 Session/Token 失效。
- JWT、SSO Token 等凭证没有校验
aud、iss、scope 等边界。
OWASP 官方典型场景
- 攻击者拿泄露账号密码做撞库,或者在原密码基础上小改几个字符继续试,命中率会比传统暴力破解更高。
- 系统仍把“复杂但人类会重复使用的密码”当成最佳实践,却没有启用 MFA,最后形成大规模账号接管。
- 用户在公共电脑上登录后只关了浏览器标签,没有真正登出,而应用或 SSO 会话又没有正确失效,下一位使用者就能直接接管会话。
怎么防
- 能启用 MFA 的地方尽量启用,并尽量强制化。
- 不要发布或保留默认凭证,尤其是管理员账号。
- 在注册和改密时检查弱口令和已泄露口令。
- 口令策略参考 NIST 800-63b 这类现代建议,不要迷信频繁强制改密。
- 登录失败要做节流、延迟、限制和告警,但同时注意别把自己做成 DoS 点。
- 统一错误提示,避免通过差异消息进行账户枚举。
- 使用服务端安全会话管理器,登录成功后重新签发高熵 Session ID。
- Session 标识符不要放在 URL 中,应放在安全 Cookie 中,并在登出、空闲和绝对超时后失效。
- 如果能采购或接入成熟身份系统,就不要自己实现整套认证体系。
- 对 JWT、SSO 凭证校验预期用途和受众,避免“拿着别处发的票来你这里入场”。
一句话总结
Authentication Failures 的本质是:系统没有把“合法身份”这件事验证严实,导致攻击者能伪装、复用或接管用户身份。