抢先一步
VMware 提供培训和认证,以加速您的进步。
了解更多Spring Security 版本 5.7(低于 5.7.5)和 5.6(低于 5.6.9)可能容易受到通过转发或包含分发程序类型绕过授权规则的攻击。
具体来说,当以下所有条件都满足时,应用程序存在漏洞
authorizeHttpRequests()
方法使用 AuthorizationFilter
。FilterChainProxy
配置为应用于转发和/或包含请求(例如,spring.security.filter.dispatcher-types = request, error, async, forward, include
)。authorizeHttpRequests().shouldFilterAllDispatcherTypes(true)
应用于每个分发程序类型。如果满足以下任何条件,则应用程序不会存在漏洞
authorizeHttpRequests()
或 AuthorizationFilter
。受影响版本的使用者应采取以下缓解措施
authorizeRequests().filterSecurityInterceptorOncePerRequest(false)
而不是 authorizeHttpRequests().shouldFilterAllDispatcherTypes(true)
shouldFilterAllDispatcherTypes
可用,应添加一个 ObjectPostProcessor
authorizeHttpRequests().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 也没有配置为在转发和包含分发程序类型上调用,这取决于您自己来执行此操作。
已修复此问题的版本包括
此问题由奇安信集团深信服 SGLAB 的 Osword 发现并负责任地报告。
要报告 Spring 产品组合中项目的安全漏洞,请参阅安全策略