领先一步
VMware提供培训和认证,以加速您的进步。
了解更多在调查Spring框架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漏洞的解决方法,您可能想知道为什么禁止的字段模式包含看似重复的条目。每个模式都必须注册两次,一次小写第一个字符,一次大写第一个字符。我们今天发布的修复程序通过在与禁止的字段模式匹配时忽略大小写来解决此问题。这还有一个额外的好处,即当注册的模式为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实体作为模型对象。