Spring 安全公告

CVE-2023-34040:配置不当的 Spring Kafka 中的 Java 反序列化漏洞

中等 | 2023年8月23日 | CVE-2023-34040

描述

在 Apache Kafka 3.0.9 和更早版本以及 2.9.10 和更早版本中,存在可能的反序列化攻击途径,但仅当应用了异常配置时才会出现。攻击者必须在一个反序列化异常记录标头中构建一个恶意的序列化对象。

具体来说,当满足以下所有条件时,应用程序易受攻击

  • 用户没有为记录的键和/或值配置 ErrorHandlingDeserializer
  • 用户显式地将容器属性 checkDeserExWhenKeyNull 和/或 checkDeserExWhenValueNull 容器属性设置为 true。
  • 用户允许不受信任的来源发布到 Kafka 主题

默认情况下,这些属性为 false,容器仅在配置了 ErrorHandlingDeserializer 时才尝试反序列化标头。ErrorHandlingDeserializer 通过在处理记录之前删除任何此类恶意标头来防止漏洞。

受影响的 Spring 产品和版本

  • 适用于 Apache Kafka 的 Spring
    • 2.8.1 到 2.9.10
    • 3.0.0 到 3.0.9

缓解措施

  • 如果不使用 ErrorHandlingDeserializers,则不要设置容器属性 checkDeserExWhenKeyNull 或 checkDeserExWhenValueNull,或者使用 ErrorHandlingDeserializers
  • 2.8.x 和 2.9.x 用户应升级到 2.9.11
  • 3.0.x 用户应升级到 3.0.10

已修复此问题的版本包括:

  • 适用于 Apache Kafka 的 Spring
    • 3.0.10
    • 2.9.11

Spring Boot 3.0.10(或更高版本)的依赖项管理将自动使用适用于 Apache Kafka 的 Spring 3.0.10(或更高版本)。Spring Boot 2.7.x 用户应将 Boot 的适用于 Apache Kafka 的 Spring 2.8.x 依赖项管理版本覆盖到 2.9.11(或更高版本)。

致谢

此问题由 Contrast Security, Inc. 的 Joseph Beeton 发现并负责任地报告。

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部