Spring Data MongoDB SpEL 表示式注入漏洞 (CVE-2022-22980)

工程 | Mark Paluch | 2022 年 6 月 20 日 | ...

更新

  • [06-20] CVE-2022-22980 已釋出
  • [06-20] Spring Data MongoDB 3.4.13.3.5 已可用

目錄

概述

我們很高興宣佈釋出 Spring Data MongoDB 3.4.1 和 3.3.5,以解決以下 CVE 報告

此漏洞由綠盟科技天機實驗室的 Zewei Zhang 於 2022 年 6 月 13 日(星期一)負責任地報告。完整報告將在未來幾天釋出到 MITRE 並作為安全公告發布在 tanzu.vmware.com/security 下。

漏洞

該漏洞影響使用帶有 @Query@Aggregation 註解並使用引數化 SpEL 語句的 Repository 查詢方法的 Spring Data MongoDB 應用程式。特定的利用需要向 Repository 查詢方法使用未經淨化的輸入。

我是否受到影響?

以下是此特定漏洞的必要條件

  • 宣告帶有 @Query@Aggregation 註解的 Repository 查詢方法,這些方法使用 SpEL (Spring Expression Language) 並在 SpEL 表示式中使用輸入引數引用 (?0, ?1, …)
  • spring-data-mongodb 依賴
  • Spring Data MongoDB 3.4.0、3.3.0 到 3.3.4 以及更舊的版本

附加說明

  • 此問題與透過表示式組裝 MongoDB 查詢的 Repository 查詢方法呼叫有關。此漏洞發生在查詢組裝期間,不需要執行查詢即可進行利用。
  • 透過陣列語法 ([0], [1], […]) 引用 SpEL 引數不會產生漏洞,如果您無法升級到包含修復的版本,這是一種推薦的權宜之計。
  • 只有當應用程式使用未經淨化的使用者輸入呼叫查詢方法時,才能利用此漏洞。此外,在不涉及額外應用程式程式碼(例如 Spring Data REST)的情況下暴露 Repository 查詢方法的配置也存在漏洞。

狀態

  • 已釋出包含修復的 Spring Data MongoDB 3.4.1 和 3.3.5。

建議的權宜之計

首選的應對措施是更新到 Spring Data MongoDB 3.4.13.3.5 或更高版本。如果您已經完成此操作,則無需任何權宜之計。然而,有些人可能無法快速升級。出於這個原因,我們在下面提供了一些權宜之計。

請注意,權宜之計不一定是相互排斥的,因為安全最好採取“深度防禦”。

使用陣列語法

如果您的應用程式需要受使用者輸入控制的動態 SpEL 表示式,那麼使用陣列語法 [0] 引用 SpEL 引數是一種安全的訪問 SpEL 引數的方式。

實現自定義 Repository 方法

將 SpEL 表示式替換為自定義 Repository 方法實現是一種可行的權宜之計,可以在應用程式程式碼中組裝動態查詢。有關更多詳細資訊,請參閱Repository 自定義參考文件

訂閱 Spring 通訊

透過 Spring 通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速前進。

瞭解更多

獲取支援

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

瞭解更多

近期活動

檢視 Spring 社群的所有近期活動。

檢視全部