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

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

描述

當 Spring Data MongoDB 應用程式使用帶有 SpEL 表示式的 @Query 或 @Aggregation 註釋的查詢方法時,如果輸入未經過清理,則存在 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“)
  • 在呼叫查詢方法之前清理引數
  • 透過帶有受限 QueryMethodEvaluationContextProvider 的 BeanPostProcessor 重新配置儲存庫工廠 bean

已修復此問題的版本包括

  • Spring Data MongoDB
    • 3.4.1+
    • 3.3.5+

鳴謝

此問題由 NSFOCUS TIANJI Lab 的張澤偉發現並負責任地報告。

參考

歷史

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

更進一步

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

瞭解更多

獲得支援

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

瞭解更多

即將舉行的活動

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

檢視全部