領先一步
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 組合專案中存在的安全漏洞,請參閱安全策略