0x01 Spring Data MongoDB
Spring Data MongoDB可以提供Java开发人员在使用MongoDB时的效率。它使用了熟悉的Spring概念,例如用于核心API的模块类,轻量级仓库风格的数据访问。
Spring Data MongoDB项目提供了与MongoDB文档数据库的集成。Spring Data MongoDB的关键功能区域是一个以POJO为中心的模型,用于与MongoDB DBCollection进行交互并轻松编写存储库样式的数据访问层。
0x02 漏洞描述
近日,VMware发布的安全公告,修复了一个存在于Spring Data MongoDB中的SpEL表达式注入漏洞。
当使用@Query或@Aggregation注解进行查询时,若通过SpEL表达式中形如“?0”的占位符来进行参数赋值,同时应用程序未对用户输入进行过滤处理,则可能受到SpEL表达式注入的影响,成功利用该漏洞的攻击者可在目标服务器上执行代码。
受影响版本:
-
Spring Data MongoDB == 3.4.0
-
1.0.0 <= Spring Data MongoDB <= 3.3.4
安全版本:
-
Spring Data MongoDB >= 3.4.1
-
Spring Data MongoDB >= 3.3.5
0x03 漏洞信息
漏洞编号:CVE-2022-22980
漏洞POC:暂无
漏洞EXP:暂无
漏洞危害:高危 代码注入
0x04 解决方案
临时修复建议:
-
您的应用程序需要使用由用户输入控制的SpEL表达式,那么使用数组形式语法“[0]”引入SpEL参数而不是“?0”形式;
-
实现自定义存储库方法,详见:https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.single-repository-behavior;
-
通过BeanPostProcessor和受限的QueryMethodEvaluationContextProvider重新配置存储工厂bean;
-
在调用查询方法时过滤用户输入内容。
通用修复建议:
官方已发布安全版本,请及时下载更新,下载地址:
-
Spring Data MongoDB 3.4.1版本:https://github.com/spring-projects/spring-data-mongodb/releases/tag/3.4.1
-
Spring Data MongoDB 3.3.5版本:https://github.com/spring-projects/spring-data-mongodb/releases/tag/3.3.5
原文始发于微信公众号(寻云安全团队):Spring Data MongoDB SpEL表达式注入漏洞 (CVE-2022-22980)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论