Spring Security 安全性建議

CVE-2016-5007 Spring Security / MVC 路徑比對不一致性

中等 | 2016 年 7 月 7 日 | CVE-2016-5007

描述

Spring Security 和 Spring Framework 都依賴 URL 模式對應,分別用於授權以及將請求對應到控制器。

模式比對機制嚴格程度的差異,例如在路徑區段中對於空白字元的處理,可能導致 Spring Security 無法識別某些應受保護的路徑,但這些路徑實際上對應到應受保護的 Spring MVC 控制器。

問題的複雜性在於 Spring Framework 在模式比對方面提供了更豐富的功能,並且 Spring Security 和 Spring Framework 中的模式比對都可以輕鬆自定義,從而產生額外的差異。

受影響的 Spring 產品與版本

  • Spring Security 3.2.x, 4.0.x, 4.1.0
  • Spring Framework 3.2.x, 4.0.x, 4.1.x, 4.2.x
  • 其他不受支援的版本也受到影響

緩解措施

受影響版本的用戶應採用以下緩解措施

  • 為了全面解決這些問題,Spring Security 提供了 URL 授權,可以將模式比對委派給 Spring Framework。 若要利用此選項,應用程式應升級到 Spring Security 4.1.1+Spring Framework 4.3.1+,並使用 MvcRequestMatcher
  • 從 Spring Framework 4.3.0+ 開始,AntPathMatcher 被配置為將 trimTokens 設置為 "false",這與 Spring Security 一致。 因此,僅僅使用 Spring Framework 4.3.0+ 就可以消除一些路徑比對不一致的原因。
  • Spring Framework 3.2.x、4.0.x、4.1.x、4.2.x 的用戶可以使用 MVC Java 配置MVC 命名空間 來將 AntPathMatchertrimTokens 屬性設置為 "false"。
  • 此外,應用程式應始終使用 Spring Security 的機制之一,例如添加 @Secured 註解,在應用程式的業務層添加額外的授權,以補充基於 URL 的授權。

貢獻

此漏洞由來自 INTRINSEC 的 Clément Notin 負責地回報。

參考資料

歷史紀錄

2016-7-7:發布初始漏洞報告

領先一步

VMware 提供培訓和認證,可加速您的進展。

瞭解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位檔。

瞭解更多

即將舉行的活動

查看 Spring 社群中所有即將舉行的活動。

檢視全部