0x01 漏洞介绍
Spring Data MongoDB 为 Spring Data 下的子项目,用于为 MongoDB 提供接口服务,便于接入 Spring 软件生态中使用。
当使用 @Query 或 @Aggregation 注解进行查询时,若通过 SpEL 占位符获取输入参数,并且未对用户输入进行有效过滤,则可能受该漏洞影响。在前述条件下,攻击者可利用该漏洞,构造恶意数据执行远程代码,最终获取服务器权限。
0x02 漏洞等级
严重 | 9.0
0x03 漏洞详情
Spring Data MongoDB 应用程序在使用带有 SpEL 表达式的 @Query 或 @Aggregation-annotated 查询方法时容易受到 SpEL 注入的影响,如果输入未经过过滤,则该表达式包含用于值绑定的查询参数占位符。
具体来说,当满足以下所有条件时,应用程序很容易受到攻击:
-
使用 @Query 或 @Aggregation 注释存储库查询方法
-
带注释的查询或聚合值/管道包含 SpEL 部分,使用表达式中的参数占位符语法
-
应用程序未清理用户提供的输入
如果以下任何一项为真,则应用程序不会受到攻击:
-
带注释的存储库查询或聚合方法不包含表达式
-
带注释的存储库查询或聚合方法不使用表达式中的参数占位符语法
-
用户提供的输入由应用程序清理
-
存储库配置为使用限制 SpEL 使用的 QueryMethodEvaluationContextProvider
0x04 影响范围
Spring Data MongoDB 3.4.0
3.3.0 ≤ Spring Data MongoDB ≤ 3.3.4
0x05 修复方案
官方已发布新版本3.4.1以及 3.3.5,建议升级至安全版本及其以上,可见 https://spring.io/projects/spring-data-mongodb
0x06 参考链接
https://tanzu.vmware.com/security/cve-2022-22980
https://spring.io/blog/2022/06/20/spring-data-mongodb-spel-expression-injection-vulnerability-cve-2022-22980
原文始发于微信公众号(锋刃科技):【漏洞情报】Spring Data MongoDB SpEL 表达式注入漏洞 (CVE-2022-22980)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论