【墨菲安全实验室】Spark(3.1.2, 3.2.1, 3.3.0版本)shell命令注入漏洞

简介: 【墨菲安全实验室】Spark(3.1.2, 3.2.1, 3.3.0版本)shell命令注入漏洞

实验室昨天第一时间监测到的0day漏洞,目前已上线检测


漏洞描述


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

由于 Hadoop 中"org.apache.hadoop.fs.FileUtill"类的“unTar”中针对 tar 文件的处理调了系统命令去解压,造成了 shell 命令注入的风险。


攻击者可以通过该漏洞实现任意命令执行。

影响产品:Apache spark

发现时间:2022-03-24 11:12:38

发现方式:墨菲安全实验室情报预警监控

组件名称:org.apache.spark:spark-core

影响版本:3.1.2, 3.2.1, 3.3.0

缺陷类型:shell命令注入

缺陷评级:高危

墨菲安全实验室于3月24日监测发现spark存在shell命令注入漏洞,已第一时间报送CNVD。


漏洞分析


在spark 3.1.2, 3.2.1, 3.3.0版本的 core/src/main/scala/org/apache/spark/util/Utils.scala 代码中调用了FileUtil.unTar方法对tar包进行解压

1.png

FileUtil.unTar方法在非windows的环境中调用了unTarUsingTar方法

image.png

Spark中调用的unTarUsingTar方法为hadoop中的hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java,其对文件名拼接之后通过tar命令进行解压,在处理过程中未对文件名进行转义。

1.png


处置建议


官方已发布补丁,参考链接:https://github.com/apache/spark/commit/057c051285ec32c665fb458d0670c1c16ba536b2


墨菲安全已于昨天第一时间将漏洞上报CNVD,并同步上线了检测能力,目前墨菲安全开源版及企业版已支持检测,欢迎大家免费使用。

开源地址:https://github.com/murphysecurity

产品官网:https://www.murphysec.com/(限时开放注册)


参考链接


https://github.com/apache/spark/commit/057c051285ec32c665fb458d0670c1c16ba536b2

https://issues.apache.org/jira/browse/SPARK-38631

https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java#L892

https://github.com/apache/hadoop/commit/cae749b076f35f0be13a926ee8cfbb7ce4402746

相关文章
|
8月前
|
存储 Unix Shell
Shell 输出命令完全指南:echo 与 printf 的深度剖析
本文深入解析了 Shell 编程中 `echo` 和 `printf` 两个核心输出命令的用法与区别。`echo` 简单易用,适合基础输出;`printf` 功能强大,支持复杂格式化。文章从语法、转义序列、高级技巧到实际应用场景(如日志记录、进度显示)逐一讲解,并对比两者的性能与适用场景,帮助开发者根据需求灵活选择。最后通过进阶技巧和常见问题解答,进一步提升对两者的掌握程度。
419 1
|
9月前
|
网络协议 Shell 网络安全
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
“说说看,如果一个Pod的容器没有Shell,如何测试它能否访问外网?”
面试官想听的不仅是命令——如何结构化回答“容器无Shell时如何测试外网”?
|
11月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
332 20
|
11月前
|
安全 Shell 数据处理
使用Python执行Shell命令并获取结果
在实际应用中,可以根据需要选择适当的参数和方法来执行Shell命令,并处理可能出现的各种情况。无论是系统管理、自动化任务还是数据处理,掌握这些技巧都将极大地提高工作效率。
382 12
|
人工智能 Shell iOS开发
AI Shell:在命令行里“对话” AI ,微软推出将 AI 助手引入命令行的 CLI 工具,打造对话式交互命令行
AI Shell 是一款强大的 CLI 工具,将人工智能直接集成到命令行中,帮助用户提高生产力。AI Shell 支持多种 AI 模型和助手,通过多代理框架提供丰富的功能和灵活的使用模式。
1738 7
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
339 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
301 1
|
分布式计算 大数据 Linux
Spark修炼之道(基础篇)——Linux大数据开发基础:第十四节:Shell编程入门(六)
本文主要内容 case控制结构 read命令 管道 1. case控制结构 参考:http://blog.csdn.net/dreamtdp/article/details/8048720 case控制结构语法格式: case expression in pattern1 ) statements ;; pattern2
2495 0
|
分布式计算 大数据 Shell
Spark修炼之道(基础篇)——Linux大数据开发基础:第十节:Shell编程入门(二)
参考书目:linux shell scripting cookbook 本节主要内容 shell命令行中的基本运算 文件描述符与文件重定向 1. shell命令行中的基本运算 通过上一节我们知道,Linux Bash shell 命令行的变量都被解析成字符串,如 //变量被解析为字符串 root@sparkmaster:~/ShellLearning/cha
2800 0
|
分布式计算 大数据 Linux
Spark修炼之道(基础篇)——Linux大数据开发基础:第十一节:Shell编程入门(三)
本节主要内容 shell数组 shell命令别名 时间操作 1. Shell数组 同C、C++等语言一样,shell脚本也提供了数组这样一个重要的数据结构,shell中的数组有两种,一种为普通数组,另外的一种称为关联数组。普通数据的存取通过整数进行,关联数组的存取通过字符串进行。具体如下: //用()定义一个数组,注意数组元素间不能用,否则达不到预期目的 roo
2844 0