领先一步
VMware 提供培训和认证,助您加速进步。
了解更多Spring Security 5.7 版本低于 5.7.5 和 5.6 版本低于 5.6.9 可能容易受到通过 forward 或 include 调度器类型绕过授权规则的影响。
具体来说,当以下所有情况都为真时,应用程序是易受攻击的
authorizeHttpRequests() 方法使用 AuthorizationFilter。FilterChainProxy 配置为应用于 forward 和/或 include 请求(例如 spring.security.filter.dispatcher-types = request, error, async, forward, include)。authorizeHttpRequests().shouldFilterAllDispatcherTypes(true) 配置 Spring Security 以应用于每种调度器类型在以下任何一种情况为真时,应用程序不易受攻击:
authorizeHttpRequests() 或 AuthorizationFilter。受影响版本的用户应采取以下缓解措施
authorizeRequests().filterSecurityInterceptorOncePerRequest(false) 而不是 authorizeHttpRequests().shouldFilterAllDispatcherTypes(true)shouldFilterAllDispatcherTypes 功能的用户应添加一个 ObjectPostProcessorauthorizeHttpRequests().withObjectPostProcessor(new
ObjectPostProcessor() {
@Override
public O postProcess(O filter) {
filter.setObserveOncePerRequest(false);
filter.setFilterAsyncDispatch(true);
filter.setFilterErrorDispatch(true);
return filter;
}}); 请注意,在 Spring Security 5 中,默认行为是不将过滤器多次应用于一个请求,因此您必须明确配置 Spring Security 来执行此操作。此外,FilterChainProxy 也未配置为在 forward 和 include 调度器类型上调用,这取决于您自己来完成。
已修复此问题的发布版本包括
此问题由奇安信集团 SGLAB 传奇安全团队的 Osword 识别并负责任地报告。
要报告 Spring 组合项目中存在的安全漏洞,请参阅安全策略