Apache Spark命令注入漏洞

破绽描绘

Apache Spark 组件存在命令注入破绽的信息,破绽要挟等级:高危。

该破绽是由于 Apache Spark Core 中援用了 Hadoop 里不平安的解压函数 unTar,攻击者可应用该破绽结构歹意数据来执行命令,最终获取效劳器最高权限。
 


 

组件引见

Apache Spark 是一种用于大数据工作负载的散布式开源处置系统。它运用内存中缓存和优化的查询执行方式,可针对任何范围的数据停止快速剖析查询。它提供运用 Java、Scala、Python 和 R 言语的开发 API,支持跨多个工作负载重用代码—批处置、交互式查询、实时剖析、机器学习和图形处置等。
 


 

应用条件

1、用户认证:暂不肯定
2、前置条件:无
3、触发方式:远程或者本地
 


 

影响范围

目前受影响的 Apache Spark 版本:
Apache Spark < 3.1.3
Apache Spark < 3.2.2
 


 

环境搭建

https://issues.apache.org/jira/browse/SPARK-38631
下载`spark-3.2.1-bin-hadoop2.7.tgz`,在Ubuntu 20.04中参加远程调试配置并启动`spark-shell`:

图片[1]-Apache Spark命令注入漏洞-孤勇者社区

默许开启4040端口监听:

图片[2]-Apache Spark命令注入漏洞-孤勇者社区
 


 

破绽剖析

hadoop-common unTar函数

定位`org.apache.hadoop.fs#unTar`:

图片[3]-Apache Spark命令注入漏洞-孤勇者社区

这里Windows和Linux处置方式不同。破绽出在Linux系统的处置函数`unTarUsingTar`中:

图片[4]-Apache Spark命令注入漏洞-孤勇者社区

将文件名直接停止拼接然后带入shell执行,存在命令注入的风险。

Spark shell命令注入

定位`Utils.unpack`:

图片[5]-Apache Spark命令注入漏洞-孤勇者社区

为了便当触发破绽,首先创立如下文件:

图片[6]-Apache Spark命令注入漏洞-孤勇者社区

查看官方开发文档,找到函数`addArchive`存在解压操作:

图片[7]-Apache Spark命令注入漏洞-孤勇者社区

执行`scala`命令,在`org.apache.spark.SparkContext#addArchive`触发断点

图片[8]-Apache Spark命令注入漏洞-孤勇者社区

不断跟到破绽触发点

图片[9]-Apache Spark命令注入漏洞-孤勇者社区

完成RCE

图片[10]-Apache Spark命令注入漏洞-孤勇者社区

 


 

处理计划

如何检测组件版本

运转 spark-shell 命令,查看输出中的版本信息。

图片[11]-Apache Spark命令注入漏洞-孤勇者社区

官方修复倡议

当前官方已发布最新版本,倡议受影响的用户及时更新晋级到最新版本。链接如下:
https://spark.apache.org/downloads.html
 

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片