Spring Security 路径匹配漏洞
漏洞描述:
Spring Security 是一套为基于 Spring 的应用程序提供说明性安全保护的安全框架。Spring WebFlux 是一种响应式编程模型来构建的Web应用程序。在 Spring Security 中,通配符字符 ** 可匹配路径分隔符 "/"。而在 Spring WebFlux 不可匹配路径分隔符。
当 Spring WebFlux 使用 Spring Security 时,如果Spring Security使用 ** 来匹配 URL 路径,导致模式匹配的不一致。攻击者通过构造路径绕过 Spring Security 的安全检查,直接访问应用程序中资源。
影响范围:
org.springframework.security:spring-security-web@[5.6.0, 5.6.12)
org.springframework.security:spring-security-web@[5.7.0, 5.7.10)
org.springframework.security:spring-security-web@[5.8.0, 5.8.5)
org.springframework.security:spring-security-web@[6.0.0, 6.0.5)
org.springframework.security:spring-security-web@[6.1.0, 6.1.2)
修复方案:
Spring Security配置中禁止使用**匹配URL
参考链接:
https://spring.io/security/cve-2023-34034
https://github.com/spring-projects/spring-security/issues/13460
https://github.com/spring-projects/spring-security/commit/7813a9ba26e53fe54e4d2ec6eb076126e8550780
Spring Security鉴权规则错误配置风险
漏洞描述:
Spring Security 是一套为基于Spring的应用程序提供说明性安全保护的安全框架。
在 Spring Security 受影响的版本中,由于 Spring Security 的授权规则会应用于整个应用程序上下文,当应用程序中包含多个servlet,并且其中一个为DispatcherServlet时 ,使用 requestMatchers(String) 方法错误地将非 Spring MVC 的端点添加到授权规则中,攻击者可以发送请求到这个的端点,从而绕过授权规则获得访问权限。
影响范围:
org.springframework.security:spring-security-config [6.0.0, 6.0.5)
org.springframework.security:spring-security-config [6.1.0, 6.1.2)
org.springframework.security:spring-security-config [5.8.0, 5.8.5)
修复方案:
将组件 org.springframework.security:spring-security-config 升级至 6.0.5 及以上版本
将组件 org.springframework.security:spring-security-config 升级至 6.1.2 及以上版本
将使用requestMatchers(String)指向的非 Spring MVC 端点,改为requestMatchers(new AntPathRequestMatcher("/endpoint"))
参考链接:
https://spring.io/security/cve-2023-34035
https://github.com/spring-projects/spring-security/commit/df239b6448ccf138b0c95b5575a88f33ac35cd9a