Spring Framework 資料繫結規則漏洞 (CVE-2022-22968)

工程 | Sam Brannen | 2022 年 4 月 13 日 | ...

目錄

概觀

在調查 Spring Framework RCE 漏洞 CVE-2022-22965 以及建議的解決方案時,我們意識到 WebDataBinder 上的 disallowedFields 設定並不直觀,且文件說明不夠清楚。我們已修正此問題,但為了安全起見,也決定發布後續的 CVE,以確保應用程式開發人員收到警示,並有機會檢閱其設定。

我們已發布包含修復程式的 Spring Framework 5.3.19 和 5.2.21。Spring Boot 2.6.7 和 2.5.13 預計於 2022 年 4 月 21 日發布。

在 Spring Boot 2.6.7 和 2.5.13 發布之前,您應手動升級 Spring Boot 應用程式中的 Spring Framework 相依性。若要在您的 Maven 或 Gradle 建置中覆寫 Spring Framework 版本,您應使用 spring-framework.version 屬性。

如需詳細資訊,請參閱 Spring Boot Maven 外掛程式Gradle 外掛程式 的文件。

在今日發布版本中的修復程式之前,DataBinderdisallowedFields 的模式是區分大小寫的,這表示除非模式以欄位第一個字元的大寫和小寫形式註冊,包括屬性路徑內所有巢狀欄位第一個字元的所有大小寫組合,否則欄位無法受到有效保護。

例如,如果您看過針對 RCE 漏洞的 Disallowed Fields 解決方案,您可能想知道為什麼 disallowed field 模式包含看似重複的項目。每個模式都必須註冊兩次,一次使用第一個字元的小寫形式,另一次使用第一個字元的大寫形式。我們今天發布的修復程式透過在比對 disallowed field 模式時忽略大小寫來解決此問題。這額外的好處是,當註冊的模式為 firstname 時,不允許繫結至 firstName 屬性。換句話說,我們所做的變更不僅修復了 CVE 中報告的漏洞,也讓 disallowed field 模式在一般情況下更為穩健。

這會影響我的應用程式嗎?

以下是此特定漏洞的必要條件

  • DataBinder 中註冊 disallowed field 模式
  • spring-webmvcspring-webflux 相依性
  • Spring Framework 版本 5.3.0 至 5.3.18、5.2.0 至 5.2.20 以及更舊版本

其他注意事項

  • 此問題與資料繫結有關,資料繫結用於從請求參數 (查詢參數或表單資料) 填入物件。資料繫結用於使用 @ModelAttribute 註解或選擇性地不使用註解,且不使用任何其他 Spring Web 註解的控制器方法參數。
  • 此問題與 @RequestBody 控制器方法參數 (例如 JSON 還原序列化) 無關。但是,如果這些方法有另一個透過查詢參數的資料繫結填入的方法參數,則可能仍然容易受到攻擊。
  • 即使您未註冊 disallowed field 模式,您的 Spring MVC 或 Spring WebFlux 應用程式也可能容易受到資料繫結問題的影響。我們強烈建議您檢閱您的 DataBinder 設定,以及更廣泛地檢閱您的資料繫結方法。如需更多詳細資訊,請參閱 Spring Framework 參考手冊中新的 Data Binding Model Design 章節。

重新評估您的資料繫結方法

如果您正在使用 disallowed field 模式並計劃繼續使用,您應務必盡快更新至 Spring Framework 5.3.195.2.21 或更高版本。

但是,除了依賴 disallowed field 模式之外,還有其他替代方案。如參考手冊中新的 Model Design 章節所述,我們建議的方法是使用專用的模型物件,該物件僅公開與支援的使用案例相關的屬性。另一個替代方案是切換到 allowed field 模式:您可以透過 WebDataBinder 中的 setAllowedFields() 提供明確的「允許清單」,而不是透過 setDisallowedFields() 提供「拒絕清單」。

請記住,強烈建議您不要在資料繫結情境中使用網域模型中的類型,例如 JPA 或 Hibernate 實體作為模型物件。

取得 Spring 電子報

隨時掌握 Spring 電子報的最新資訊

訂閱

領先一步

VMware 提供訓練和認證,以加速您的進展。

瞭解更多

取得支援

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

瞭解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

檢視全部