CVE-2023-20862:登出时未正确保存空 SecurityContext
高 | 2023 年 4 月 17 日 | CVE-2023-20862
描述
在 Spring Security 中,版本 5.7.x(低于 5.7.8)、版本 5.8.x(低于 5.8.3)和版本 6.0.x(低于 6.0.3)中,如果使用序列化版本,注销支持无法正确清除安全上下文。此外,无法将空的 SecurityContext 显式保存到 HttpSessionSecurityContextRepository 中。此漏洞可能导致用户在执行注销后仍然保持身份验证状态。
具体来说,当以下任何一个条件为真时,应用程序存在漏洞
- 您正在使用 SecurityContextHolderFilter 或 requireExplicitSave(true),并且您正在使用 Spring Security 的注销支持以及序列化会话(例如 Spring Session)和 invalidateHttpSession(false)
- 您正在通过将空的 SecurityContext 保存到 HttpSessionSecurityContextRepository 中来手动注销用户
- 您有一个不依赖于 HttpSession 的自定义 SecurityContextRepository
如果以下任何一个条件为真,则应用程序没有漏洞
- 您仍在使用已弃用的 SecurityContextPersistenceFilter 或 requireExplicitSave(false)
- 您正在使用 Spring Security 的注销支持以及内存会话。
- 您没有将空的 SecurityContext 保存到 HttpSessionSecurityContextRepository 中
受影响的 Spring 产品和版本
Spring Security
- 6.0.0 至 6.0.2
- 5.8.0 至 5.8.2
- 5.7.0 至 5.7.7
缓解措施
受影响版本的用户应应用以下缓解措施。5.7.x 用户应升级到 5.7.8。5.8.x 用户应升级到 5.8.3。6.0.x 用户应升级到 6.0.3。不需要其他步骤。已修复此问题的版本包括
Spring Security
鸣谢
此问题由 Porsche Informatik 的 Daniel Furtlehner 发现并负责任地报告。
参考