领先一步
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 实体)的类型作为模型对象。