美创安全实验室监测到Spring Data MongoDB SpEL表达式注入漏洞,漏洞编号:CVE-2022-22980,漏洞等级:高危,漏洞评分:8.2。
当使用@Query或@Aggregation注解进行查询时,若通过SPEL表达式中形如“?0”的占位符来进行参数赋值,同时应用程序未对用户输入进行过滤处理,则可能受到SPEL表达式注入的影响,进而可造成远程代码执行。
对此,美创安全实验室建议用户尽快将Spring Data MongoDB更新至安全版本。
旧的、不受支持的版本也会受到影响
Spring Data MongoDB >= 3.4.1
目前,VMware官方已发布漏洞修复补丁,建议用户尽快下载安装补丁程序或采取缓解措施。
1.补丁升级
建议尽快升级至官方修护版本:
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
2. 缓解措施
(1)如果您的应用程序需要使用由用户输入控制的SpEL表达式,那么使用数组形式语法“[0]”引入SpEL参数而不是“?0”形式;
(2)实现自定义存储库方法,详见:
https://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#repositories.single-repository-behavior
(3)通过BeanPostProcessor和受限的QueryMethodEvaluationContextProvider重新配置存储工厂bean;
(4)在调用查询方法时过滤用户输入内容。
更多修复建议请参考官方发布的安全建议文档:
https://spring.io/blog/2022/06/20/spring-data-mongodb-spel-expression-injection-vulnerability-cve-2022-22980
原文始发于微信公众号(第59号):【漏洞通告】Spring Data MongoDB SpEL表达式注入漏洞(CVE-2022-22980)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论