快人一步
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
的使用者應新增一個 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 預設也不配置為在 forward 和 include 排程器型別上呼叫,這取決於您自行進行配置。
已修復此問題的版本包括:
此問題由奇安信集團網神安全實驗室(SGLAB of Legendsec at Qi'anxin Group)的 Osword 負責任地識別並報告。
要報告 Spring 產品組合中的專案安全漏洞,請參閱安全政策