發(fā)布時(shí)間 :2022年06月22日
漏洞描述
近日,亞信安全CERT監(jiān)控到Spring Data MongoDB存在表達(dá)式注入漏洞(CVE-2022-22980),該漏洞源于Spring Data MongoDB應(yīng)用程序在使用帶有SpEL表達(dá)式的@Query或@Aggregation-annotated查詢方法時(shí)容易受到SpEL注入的影響,如果輸入未過濾,則該表達(dá)式包含用于值綁定的查詢參數(shù)占位符。攻擊者利用該漏洞可在目標(biāo)服務(wù)器上執(zhí)行代碼。
Spring Data MongoDB是Spring Source的一個(gè)子項(xiàng)目,旨在為關(guān)系型數(shù)據(jù)庫(kù)、非關(guān)系型數(shù)據(jù)、Map-Reduce框架、云數(shù)據(jù)服務(wù)等等提供統(tǒng)一的數(shù)據(jù)訪問API。Spring Data MongoDB是Spring框架訪問MongoDB的組件,使用它可以非常方便的操作MongoDB數(shù)據(jù)庫(kù)。
目前廠商已發(fā)布安全版本,鑒于該漏洞受影響面廣大,亞信安全CERT建議使用Spring Data MongoDB的用戶盡快采取相關(guān)措施。
漏洞編號(hào)
CVE-2022-22980
漏洞等級(jí)
高危
漏洞狀態(tài)
受影響的版本
修復(fù)建議
※更新至安全版本:
※緩解措施:
用數(shù)組語法:如果您的應(yīng)用程序需要由用戶輸入控制的動(dòng)態(tài)SpEL表達(dá)式,則使用數(shù)組語法引用SpEL參數(shù)[0]是訪問SpEL參數(shù)的安全方法。
實(shí)現(xiàn)自定義存儲(chǔ)庫(kù)方法:用自定義存儲(chǔ)庫(kù)方法實(shí)現(xiàn)替換SpEL表達(dá)式是在應(yīng)用程序代碼中組裝動(dòng)態(tài)查詢的可行解決方法。有關(guān)更多詳細(xì)信息,請(qǐng)參閱有關(guān)存儲(chǔ)庫(kù)自定義的參考文檔。
在調(diào)用查詢方法之前清理參數(shù)。
通過具有受限QueryMethodEvaluationContextProvider和BeanPostProcessor重新配置存儲(chǔ)庫(kù)工廠bean。
參考鏈接
https://spring.io/blog/2022/06/20/spring-data-mongodb-spel-expression-injection-vulnerability-cve-2022-22980
https://github.com/spring-projects/spring-data-mongodb/releases/tag/3.4.1
Release 3.3.5 · spring-projects/spring-data-mongodb
https://tanzu.vmware.com/security/cve-2022-22980