领先一步
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 漏洞的 “禁止字段” 解决方法,您可能想知道为什么禁止字段模式包含看似重复的条目。每个模式都必须注册两次,一次是第一个字符小写,另一次是第一个字符大写。我们今天发布的修复程序通过在匹配禁止字段模式时忽略大小写来解决此问题。这样做还有一个额外的好处,即当注册模式为 firstname 时,不允许绑定到 firstName 属性。换句话说,我们所做的更改不仅修复了 CVE 中报告的漏洞,而且还使禁止字段模式总体上更加健壮。
这些是特定漏洞的必要条件
DataBinder 中注册禁止字段模式spring-webmvc 或 spring-webflux 依赖项附加说明
@ModelAttribute 注解或可选地没有该注解且没有任何其他 Spring Web 注解的控制器方法参数。@RequestBody 控制器方法参数(例如 JSON 反序列化)无关。但是,如果这些方法有另一个通过查询参数的数据绑定填充的方法参数,它们仍然可能存在漏洞。DataBinder 配置以及更广泛的数据绑定方法。有关更多详细信息,请参阅 Spring Framework 参考手册中新的 数据绑定模型设计 部分。如果您正在使用禁止字段模式并计划继续使用它们,您应该尽快更新到 Spring Framework 5.3.19 和 5.2.21 或更高版本。
但是,除了依赖禁止字段模式之外,还有其他替代方案。正如参考手册中新的 模型设计 部分所讨论的,我们推荐的方法是使用专用模型对象,该对象仅公开与支持用例相关的属性。另一种替代方法是切换到允许字段模式:您可以通过 WebDataBinder 中的 setAllowedFields() 提供明确的“允许列表”,而不是通过 setDisallowedFields() 提供“拒绝列表”。
请记住,强烈建议您不要在数据绑定场景中使用来自您的域模型(例如 JPA 或 Hibernate 实体)的类型作为模型对象。