【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞

渗透技巧 2年前 (2022) admin
691 0 0
关注公众号回复“漏洞”获取研究环境
漏洞信息


近日发现Apache Spark官方发布了漏洞信息`SPARK-38631`:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


当文件名称被恶意用户控制时,存在通过`Utils.unpack`实现任意shell命令注入的风险,影响版本为`3.1.2, 3.2.1, 3.3.0`。由于`Utils.unpack`是通过调用Hadoop的`unTar`函数来实现解压功能,所以本质上这是Hadoop产生的漏洞。

环境搭建


下载`spark-3.2.1-bin-hadoop2.7.tgz`,在Ubuntu 20.04中加入远程调试配置并启动`spark-shell`:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


默认开启4040端口监听:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


hadoop-common unTar函数


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


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


这里Windows和Linux处理方式不同。漏洞出在Linux系统的处理函数`unTarUsingTar`中:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


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

Spark shell命令注入


定位`Utils.unpack`:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


为了方便触发漏洞,首先创建如下文件:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


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


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


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


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


一直跟到漏洞触发点:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


实现RCE:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


修复方式


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


针对`*.tar`后缀名结尾的文件,将处理函数更新为`unTarUsingJava`。

小结


从前面分析可知,漏洞本质上是`hadoop-common`产生的,可导致Spark shell出现命令注入,并且只能在Linux系统上触发。从修复补丁来看,只对`*.tar`后缀名单独进行了处理,但是`*.tar.gz`和`*.tgz`好像并没有更新,其实在Spark处理过程中,这两种后缀名文件会在命令字符串前面加上`gzip`命令的前缀,导致最终无法实现命令执行:


【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞


有兴趣的小伙伴按照上面思路分析调试一下就会明白,这里不过多赘述。



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



点关注,不迷路!

【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞

关注公众号回复“漏洞”获取研究环境

原文始发于微信公众号(且听安全):【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞

版权声明:admin 发表于 2022年3月31日 上午8:30。
转载请注明:【最新漏洞预警】SPARK-38631 Hadoop unTar函数引发的命令注入漏洞 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...