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

MEDIUM | 2023 年 8 月 23 日 | CVE-2023-34040

描述

在 Spring for Apache Kafka 3.0.9 及更早版本,以及 2.9.10 及更早版本中,存在潛在的反序列化攻擊向量,但僅當應用了不尋常的配置時才會發生。攻擊者必須在反序列化異常記錄標頭中構造一個惡意序列化物件。

具體來說,當所有以下條件都為真時,應用程式容易受到攻擊

  • 使用者沒有為記錄的鍵和/或值配置 ErrorHandlingDeserializer
  • 使用者顯式地將容器屬性 checkDeserExWhenKeyNull 和/或 checkDeserExWhenValueNull 容器屬性設定為 true。
  • 使用者允許不受信任的源釋出到 Kafka 主題

預設情況下,這些屬性為 false,並且容器僅在配置了 ErrorHandlingDeserializer 時才嘗試反序列化標頭。ErrorHandlingDeserializer 透過在處理記錄之前刪除任何此類惡意標頭來防止漏洞。

受影響的 Spring 產品和版本

  • Spring for Apache Kafka
    • 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

已修復此問題的版本包括

  • Spring for Apache Kafka
    • 3.0.10
    • 2.9.11

Spring Boot 3.0.10(或更高版本)依賴項管理將自動使用 Spring for Apache Kafka 3.0.10(或更高版本)。Spring Boot 2.7.x 使用者應將 Boot 的 Spring for Apache Kafka 2.8.x 依賴項管理版本覆蓋為 2.9.11(或更高版本)。

致謝

此問題由 Contrast Security, Inc. 的 Joseph Beeton 發現並負責地報告。

搶先一步

VMware 提供培訓和認證,以加速您的進步。

瞭解更多

獲得支援

Tanzu Spring 在一個簡單的訂閱中提供對 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉行的活動

檢視 Spring 社群中所有即將舉行的活動。

檢視全部