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 的授權。

致謝

該漏洞由 Clément Notin(來自 INTRINSEC)負責任地報告。

參考資料

歷史

2016-7-7: 首次釋出漏洞報告

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有