Spark 存在 shell 命令注入(CNVD-C-2022-163612

漏洞简述

3月24日,墨菲安全实验室情报预警监控发现 spark 提交修复 shell 命令注入的代码,当上传文件名可以被攻击者控制时,就可以构造恶意文件名造成远程任意命令执行。

Spark 是用于大规模数据处理的统一分析引擎。

用户上传文件后,tar 文件会被 hadoop 的 tar 命令解压,如果文件名被用户恶意构造后,就会导致 shell 命令注入。

漏洞评级为严重,受影响组件版本范围为:

  • 3.1.1 ~ 3.2.1

用户需要尽快下载补丁并安装,参考链接:https://github.com/spring-cloud/spring-cloud-function/commit/0e89ee27b2e76138c16bcba6f4bca906c4f3744f。

漏洞时间线

  • 3.24日:开发者提交代码进行漏洞修复,墨菲安全实验室发现该漏洞并上报CNVD和CNNVD

缺陷分析

通过https://github.com/apache/spark项目中的commit信息可以发现漏洞和shell命令执行有关。

Spark 存在 shell 命令注入(<a rel="noreferrer noopener" href="https://www.cnvd.org.cn/flaw/show/CNVD-2022-163612" target="_blank">CNVD-C-2022-163612</a>)

开发者修改了对 tar 文件的处理方式,我们分析下这两种处理方式。

Spark 存在 shell 命令注入(<a rel="noreferrer noopener" href="https://www.cnvd.org.cn/flaw/show/CNVD-2022-163612" target="_blank">CNVD-C-2022-163612</a>)
Spark 存在 shell 命令注入(<a rel="noreferrer noopener" href="https://www.cnvd.org.cn/flaw/show/CNVD-2022-163612" target="_blank">CNVD-C-2022-163612</a>)

有问题的 unTar 方法调用了

通过对源码分析,可以看到ShortcutConfigurable.getValue()方法取值时使用了StandardEvaluationContext进行表达式解析。

Spark 存在 shell 命令注入(<a rel="noreferrer noopener" href="https://www.cnvd.org.cn/flaw/show/CNVD-2022-163612" target="_blank">CNVD-C-2022-163612</a>)

下方的shortcutType().normalize()则在对value进行归一化的时候调用了getValue()

Spark 存在 shell 命令注入(<a rel="noreferrer noopener" href="https://www.cnvd.org.cn/flaw/show/CNVD-2022-163612" target="_blank">CNVD-C-2022-163612</a>)

可以发现GatewayFilterFactory继承了ShortcutConfigurableRewritePathGatewayFilterFactory等过滤器类实现了GatewayFilterFactory

根据官方文档,开启acutator后可以通过访问/actuator/gateway/routes列出路由,路由中包含filter,如:

Spark 存在 shell 命令注入(<a rel="noreferrer noopener" href="https://www.cnvd.org.cn/flaw/show/CNVD-2022-163612" target="_blank">CNVD-C-2022-163612</a>)

同时可以通过/gateway/routes/{id_route_to_create}创建路由。

然后通过/actuator/gateway/refresh刷新路由,重新加载配置使得路由生效。

因此攻击者可以添加带有filter的恶意路由,当重新加载路由时,会触发对参数的归一化逻辑,从而导致filter参数value中的SPEL表达式被解析。

漏洞发现者在博客中描述了自己的漏洞发现过程,还分析了为什么在CodeQL中存在SPEL注入的规则,却没能发现这个问题,以及其他的一些问题,值得学习,感兴趣的同学可以阅读,在此不过多展开。

参考链接

https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-how-it-works

https://tanzu.vmware.com/security/cve-2022-22947

https://wya.pl/2022/02/26/cve-2022-22947-spel-casting-and-evil-beans/

发布者:墨菲安全,转发请注明出处:https://www.murphysec.com/blog/vulnerability-analysis/4133.html

(0)
上一篇 2023年1月4日 17:26
下一篇 2023年1月4日 17:29

相关推荐

  • Apache IoTDB grafana-connector模块SQL注入分析

    漏洞简述 Apache IoTDB 是面向IoT场景存储时序数据的数据管理系统,具备跟Grafana、spark等系统的集成能力。 4月8日,IoTDB 修复了其中 grafana-connector 模块中的 SQL 注入漏洞。 由于 grafana-connector 模块中 BasicDaoImpl 类的 querySeriesInternal 方法存…

    2023年1月4日
  • Spring Cloud Gateway代码注入漏洞分析(CVE-2022-22947)

    漏洞简述 3月1日,VMware发布了针对Spring Cloud Gateway的漏洞通告(https://tanzu.vmware.com/security/cve-2022-22947),当actuator端点开启并对外暴露时,攻击者可以构造恶意请求实现远程任意代码执行。 Spring Cloud Gateway是Spring Cloud 生态中的AP…

    2023年1月4日
  • CVE-2023-23752 Joomla未授权访问漏洞分析

    Joomla 在海外使用较多,是一套使用 PHP 和 MySQL 开发的开源、跨平台的内容管理系统(CMS)。Joomla 4.0.0 至 4.2.7 版本中的 ApiRouter.php#parseApiRoute 在处理用户的 Get 请求时为对请求参数有效过滤,导致攻击者可向 Joomla 服务端点发送包含 public=true 参数的请求

    2023年2月23日
  • Fastjson官方再次披露高危漏洞,包括rocketmq、jeecg-boot等近15%的github开源项目受影响

    2022年5月23日,fastjson 官方发布安全通报,fastjson <= 1.2.80 存在反序列化任意代码执行漏洞,在特定条件下可绕过默认autoType关闭限制,可能会导致远程服务器被攻击,风险影响较大。OSCS开源软件社区对此漏洞进行收录,漏洞信息如下: 漏洞评级:高危 影响组件:com.alibaba:fastjson 影响版本:&lt…

    漏洞分析 2023年1月4日
  • Ghost 博客系统后台代码执行漏洞分析

    漏洞简述 Ghost 是以Node.js语言开发的一款开源博客程序,在Github上其star为超过4万。 漏洞分析 漏洞因为需要后台权限,有一定利用条件,有趣的点在于Ghost的RCE漏洞是由于moment.js下的路径遍历和文件包含漏洞,再加上Ghost中的文件上传和指定locale功能。moment.js中的文件包含漏洞,在一般情况下可能影响较小,但结…

    2023年1月4日

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-180-9568

邮件:hi@murphysec.com

工作时间:周一至周五,10:00-19:00,节假日休息

关注公众号

20230105-100741