背景:公司收到关于 Spring Security 的一个身份验证绕过漏洞的通知,该漏洞被标识为 CVE-2023-34035
高 | 2023年7月17日 | CVE-2023-34035
关于 Spring Security 的一个身份验证绕过漏洞的通知,该漏洞被标识为 CVE-2023-34035,
CVE-2023-34034:WebFlux使用未加前缀的双通配符模式绕过安全性
受影响的Spring产品和版本
Spring Security 5.8.0至5.8.4
Spring Security 6.0.0至6.0.4
Spring Security 6.1.0至6.1.1
受影响版本的用户应采取以下缓解措施。
首先:
5.8.x应升级到5.8.5
6.0.x应升级到6.0.5
6.1.x应升级到6.1.2
CVE 官方网站 https://www.cve.org/CVERecord

https://spring.io/security/cve-2023-34035
https://nvd.nist.gov/vuln/detail/CVE-2023-34035
Spring Security 是一个安全框架,提供身份验证、授权和其他安全功能,用于保护 Web 应用免受攻击。其主要目标是确保只有经过身份验证和授权的用户可以访问应用程序的特定部分或执行特定操作。
收到关于 Spring Security 的一个身份验证绕过漏洞的通知,该漏洞被标识为 CVE-2023-34035,
受影响的 Spring Security 版本存在授权规则配置错误的漏洞,如果应用程序使用 requestMatchers(String) 和多个 Servlet,其中一个是 Spring MVC 的 DispatcherServlet。
(DispatcherServlet 是一个 Spring MVC 组件,将 HTTP 端点映射到带有 @Controller 注解的类的方法。)
具体而言,当满足以下条件时,应用程序就存在漏洞:
如果满足以下任何条件,应用程序就不会存在漏洞:
以下Spring Security版本修复了此漏洞:
Spring Security 5.8.0至5.8.4
Spring Security 6.0.0至6.0.4
Spring Security 6.1.0至6.1.1
上述版本要求使用以下Spring Framework版本:
5.8.x应升级到5.8.5
6.0.x应升级到6.0.5
6.1.x应升级到6.1.2
Spring 建议采取以下两步缓解措施:
步骤 1:升级到最新版本的 Spring Security(6.1.2 / 6.0.5 / 5.8.5)。链接:https://spring.io/projects/spring-security
步骤 2:如果您正在使用多个 Servlet,其中一个是 Spring MVC 的 DispatcherServlet,在启动时可能会看到以下错误消息:
This method cannot decide whether these patterns are Spring MVC patterns or not.
If this endpoint is a Spring MVC endpoint,
please use requestMatchers(MvcRequestMatcher);
otherwise, please use requestMatchers(AntPathRequestMatcher).
请按照此错误消息进行操作。
例如,如果使用requestMatchers(String)指向一个非 Spring MVC 端点 /endpoint,那么将其更改为 requestMatchers(new AntPathRequestMatcher("/endpoint"))。
如果使用 requestMatchers(String) 指向一个 Spring MVC 端点 /mvc-endpoint,那么将其更改为 requestMatchers(new MvcRequestMatcher(introspector, "/mvc-endpoint")),其中 introspector 是一个 @Autowired 的 HandlerMappingIntrospector。