領先一步
VMware 提供培訓和認證,助你加速進步。
瞭解更多在調查 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
屬性。
在今天釋出的版本中修復之前,DataBinder
中 disallowedFields
的模式是區分大小寫的,這意味著除非註冊的模式包含欄位第一個字元的大寫和小寫形式,以及屬性路徑中所有巢狀欄位第一個字元的所有大小寫組合,否則欄位無法得到有效保護。
例如,如果你看過針對 RCE 漏洞的 Disallowed Fields(不允許的欄位) 規避措施,你可能會想知道為什麼不允許的欄位模式包含看似重複的條目。每個模式都必須註冊兩次,一次是第一個字元小寫,另一次是第一個字元大寫。我們今天釋出的修復透過在匹配不允許的欄位模式時忽略大小寫來解決這個問題。這帶來的額外好處是,當註冊模式為 firstname
時,也阻止了繫結到 firstName
屬性。換句話說,我們所做的更改不僅修復了 CVE 中報告的漏洞,而且總體上使不允許的欄位模式更加健壯。
這是特定漏洞所需的必要條件
DataBinder
中註冊不允許的欄位模式spring-webmvc
或 spring-webflux
依賴附加說明
@ModelAttribute
註解或可選不帶註解且不帶任何其他 Spring Web 註解的控制器方法引數。@RequestBody
註解的控制器方法引數(例如 JSON 反序列化)無關。但是,如果此類方法有另一個透過資料繫結從查詢引數填充的方法引數,則仍可能存在漏洞。DataBinder
配置以及更廣泛的資料繫結方法。有關更多詳細資訊,請參閱 Spring Framework 參考手冊中新的資料繫結模型設計部分。如果你正在使用不允許的欄位模式並計劃繼續使用它們,你絕對應該儘快更新到 Spring Framework 5.3.19 和 5.2.21 或更高版本。
但是,除了依賴不允許的欄位模式之外,還有其他選擇。正如參考手冊中新的模型設計部分所討論的,我們推薦的方法是使用一個專用模型物件,該物件僅暴露與支援的用例相關的屬性。另一種選擇是切換到允許的欄位模式:不是透過 setDisallowedFields()
提供“拒絕列表”,你可以在 WebDataBinder
中透過 setAllowedFields()
提供一個明確的“允許列表”。
請記住,強烈建議你不要在資料繫結場景中使用來自域模型(例如 JPA 或 Hibernate 實體)的型別作為模型物件。