CVE-2022-22980: Spring Data MongoDB 透過註解儲存庫查詢方法存在的 SpEL 表示式注入漏洞

| 2022年6月20日 | CVE-2022-22980

描述

當Spring Data MongoDB應用程式使用帶有@Query或@Aggregation註解的查詢方法,並且其SpEL表示式包含用於值繫結的查詢引數佔位符,且輸入未經淨化時,該應用程式易受SpEL注入攻擊。

具體來說,當以下所有情況都為真時,應用程式是易受攻擊的

  • 倉庫查詢方法使用@Query或@Aggregation註解
  • 帶註解的查詢或聚合值/管道包含使用表示式中引數佔位符語法的SpEL部分
  • 使用者提供的輸入未經應用程式淨化

在以下任何一種情況為真時,應用程式不易受攻擊:

  • 帶註解的倉庫查詢或聚合方法不包含表示式
  • 帶註解的倉庫查詢或聚合方法未在表示式中使用引數佔位符語法
  • 使用者提供的輸入經過應用程式淨化
  • 倉庫配置為使用限制SpEL用法的QueryMethodEvaluationContextProvider

受影響的 Spring 產品和版本

  • Spring Data MongoDB
    • 3.4.0
    • 3.3.0至3.3.4
    • 較舊的、不受支援的版本也受到影響

緩解措施

受影響版本的使用者應採取以下緩解措施:3.4.x使用者應升級到3.4.1+。3.3.x使用者應升級到3.3.5+。無需其他步驟。對於無法升級到上述版本的應用程式,還有其他緩解步驟。

其他緩解步驟

  • 重寫查詢或聚合宣告,以在表示式中使用引數引用(“[0]”而非“?0”)
  • 在呼叫查詢方法前淨化引數
  • 透過BeanPostProcessor使用受限的QueryMethodEvaluationContextProvider重新配置倉庫工廠bean

已修復此問題的釋出版本包括

  • Spring Data MongoDB
    • 3.4.1+
    • 3.3.5+

致謝

本問題由安天智甲實驗室的張澤偉發現並負責報告。

參考資料

歷史

  • 2022-06-20:釋出初始漏洞報告。

領先一步

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

瞭解更多

獲得支援

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

瞭解更多

即將舉行的活動

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

檢視所有