YARN 远程代码执行(RCE)安全漏洞问题分析与解决方案

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: YARN 远程代码执行(RCE)安全漏洞问题分析与解决方案

YARN 远程代码执行(RCE)安全漏洞问题分析与解决方案

1 YARN RCE 漏洞问题问题现象

某客户使用Tenable.sc扫描安全漏洞后反馈,YARN 存在Remote code execution (RCE) 安全漏洞问题,攻击者可在未经过身份验证的情况下通过该漏洞在受影响主机执行任意命令,最终控制服务器。 问题描述及细节情况如下图所示:

image.png

2 YARN RCE 漏洞问题分析与复现

  • YARN 内置了Jetty并基于Jetty提供了 restful api,用户可以访问这些 restful api 以获得YARN集群中集群、节点和用用的相关信息。
  • 在未作特殊配置的情况下,普通用户确实可以在未认证的情况下访问yarn这些restful api,通过巧妙地构建特定的JSON输入数据,确实可以通过Remote code execution (RCE) 安全漏洞在受影响主机执行任意命令,最终控制服务器。
  • 我们可以通过开启kerberos安全认证(hadoop.security.authentication=kerberos),来阻止针对整个hadoop集群(包括hdfs/yarn)的基于RPC的未授权访问;
  • 我们可以通过进一步开启 HTTP Web 控制台的 Kerberos 身份验证(hadoop.http.authentication.type=kerberos),来阻止针对整个hadoop集群(包括hdfs/yarn)的基于http的未授权访问;

2.1 未开启kerberos安全认证

在未开启kerberos安全认证的集群中(core-site.xml中hadoop.security.authentication=simple):

  • 用户在未经安全认证的情况下,可以正常使用yarn application -list等客户端命令(底层基于rpc协议):
  • 用户在未经安全认证的情况下,也可以正常访问yarn的restful api(底层基于http协议):

image.png


2.2 开启kerberos安全认证

在开启了kerberos安全认证的集群中(core-site.xml中hadoop.security.authentication=kerberos):

  • 用户只有在经过 kinit安全认证的情况下,才可以使用yarn application -list等客户端命令(底层基于rpc协议);
  • 但可以在未经任何认证的情况下,使用curl等命令或浏览器等正常访问yarn的restful api(底层基于http协议):

image.png

2.3 开启kerberos安全认证和 HTTP Web 控制台的 Kerberos 身份验证

在开启了kerberos安全认证且启用了 HTTP Web 控制台的 Kerberos 身份验证的集群(core-site.xml中hadoop.security.authentication=Kerberos,且hadoop.http.authentication.type=kerberos):

  • 用户只有在经过 kinit安全认证后,才可以正常使用yarn application -list等客户端命令(底层基于rpc协议);
  • 且只有在经过配置和认证的情况下,才可以使用curl等命令或浏览器正常访问yarn的restful api(底层基于http协议):

image.png

3.问题解决

  • 综上所述,可以更改服务端配置,开启集群的kerberos的安全认证和 HTTP Web 控制台的 Kerberos 身份验证(core-site.xml中hadoop.security.authentication=Kerberos,且hadoop.http.authentication.type=kerberos),来阻止YARN的各种未授权访问漏洞,包括未认证Remote code execution (RCE) 安全漏洞;
  • 在CDH/CDP等大数据平台中,可以通过CM界面完成上述操作变更,开启kerberos的安全认证:管理=》安全=》启用kerberos;


  • 在CDH/CDP等大数据平台中,可以通过CM界面一键完成上述操作变更,开启HTTP Web 控制台的 Kerberos 身份验证;

image.png

4. 技术背景

  • 在未开启kerberos安全认证的集群中(core-site.xml中hadoop.security.authentication=simple),用户在未经安全认证的情况下,可以正常使用yarn/hdfs等客户端命令(底层基于rpc协议),也可以正常访问yarn/hdfs等的web控制台或restful api(底层基于http协议);
  • 我们可以通过开启kerberos安全认证(hadoop.security.authentication=kerberos),来阻止针对整个hadoop集群(包括hdfs/yarn)的基于RPC的未授权访问,此时客户端通过 rpc 协议访问大数据服务如 hdfs/yarn/hive/hbase/kafka/zookeeper/spark 等服务端时,只有在经过 kerberos 认证后才能访问成功;
  • 我们可以通过进一步开启 HTTP Web 控制台的 Kerberos 身份验证(hadoop.http.authentication.type=kerberos),来阻止针对整个hadoop集群(包括hdfs/yarn)的基于http的未授权访问,此时用户在通过 web 浏览器或curl等命令基于 http/https访问大数据服务如 namenode/resourceManager/hive hs2/spark History Server 等的 webui或restful api时,spnego 会对用户进行身份验证,用户只有在成功通过了 kerberos 认证拿到了 ticket 后,才能成功访问对应服务的 web ui(需要在浏览器或curl等命令中做相应配置);
  • 开启hdfs/yarn的HTTP Web 控制台的 Kerberos 身份验证,其背后更改的是配置文件core-site.xml中的hadoop.http.authentiation.* 等配置项,如下图所示:

image.png

  • 配置hdfs/yarn之外的其它服务的HTTP Web 控制台的 Kerberos 身份验证,比如Hive等服务,在CDH/CDP中部分版本可能没有一键进行开启或关闭的功能,此时需要通过高级代码端的方式进行配置,且如果配置参数不全的话,对应的服务可能会启动失败:(当然如果这些服务只是提供了web ui页面而没有提供restful api, 也不会有未认证的RCE安全问题):

image.png

5. 相关命令与参数

# 相关命令:
curl -H "Content-Type: application/json" -X GET "http://10.20.39.42:8088/ws/v1/cluster/apps"
curl -H "Content-Type: application/json" -X GET "http://10.20.25.28:8088/ws/v1/cluster/info"
curl "http://10.20.25.28:8088/ws/v1/cluster/apps" -H "Content-Type: application/json" -X POST -d {"am-container-spec":{"commands":{"command":"ping -c 3 -s 500 10.20.25.28"}},"application-id":"application_xx_xx","application-type":"YARN","application-name":"xx"}
#core-site.xml中相关参数:
    <name>hadoop.http.authentication.type</name>
    <value>kerberos</value>
    <name>hadoop.http.authentication.signature.secret.file</name>
    <value>/var/run/cloudera-scm-agent/process/4215-yarn-RESOURCEMANAGER/http-auth-signature-secret</value>
    <name>hadoop.http.authentication.cookie.domain</name>
    <value></value>
    <name>hadoop.http.authentication.kerberos.principal</name>
    <value>HTTP/_HOST@CDH.COM</value>
    <name>hadoop.http.authentication.kerberos.keytab</name>
    <value>yarn.keytab</value>
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
分布式计算 资源调度 安全
|
资源调度 JavaScript
Vue npm yarn webpack 遇到无法加载文件禁止运行脚本解决方案
Vue npm yarn webpack 遇到无法加载文件禁止运行脚本解决方案
167 0
Vue npm yarn webpack 遇到无法加载文件禁止运行脚本解决方案
|
3月前
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
165 3
YARN(Hadoop操作系统)的架构
|
3月前
|
资源调度 分布式计算 Hadoop
使用YARN命令管理Hadoop作业
本文介绍了如何使用YARN命令来管理Hadoop作业,包括查看作业列表、检查作业状态、杀死作业、获取作业日志以及检查节点和队列状态等操作。
76 1
使用YARN命令管理Hadoop作业
|
4月前
|
资源调度 分布式计算 算法
【揭秘Yarn调度秘籍】打破资源分配的枷锁,Hadoop Yarn权重调度全攻略!
【8月更文挑战第24天】在大数据处理领域,Hadoop Yarn 是一种关键的作业调度与集群资源管理工具。它支持多种调度器以适应不同需求,默认采用FIFO调度器,但可通过引入基于权重的调度算法来提高资源利用率。该算法根据作业或用户的权重值决定资源分配比例,权重高的可获得更多计算资源,特别适合多用户共享环境。管理员需在Yarn配置文件中启用特定调度器(如CapacityScheduler),并通过设置队列权重来实现资源的动态调整。合理配置权重有助于避免资源浪费,确保集群高效运行,满足不同用户需求。
67 3
|
7月前
|
资源调度 分布式计算 Hadoop
Hadoop Yarn 核心调优参数
这是一个关于测试集群环境的配置说明,包括3台服务器(master, slave1, slave2)运行CentOS 7.5,每台有4核CPU和4GB内存。集群使用Hadoop 3.1.3,JDK1.8。Yarn核心配置涉及调度器选择、ResourceManager线程数、节点检测、逻辑处理器使用、核心转换乘数、NodeManager内存和CPU设置,以及容器的内存和CPU限制。配置完成后,需要重启Hadoop并检查yarn配置。
136 4
|
7月前
|
SQL 分布式计算 资源调度
Hadoop Yarn 配置多队列的容量调度器
配置Hadoop多队列容量调度器,编辑`capacity-scheduler.xml`,新增`hive`队列,`default`队列占总内存40%,最大60%;`hive`队列占60%,最大80%。配置包括队列容量、用户权限和应用生存时间等,配置后使用`yarn rmadmin -refreshQueues`刷新队列,无需重启集群。多队列配置可在Yarn WEB界面查看。
105 4
|
6月前
|
资源调度 分布式计算 Hadoop
实时计算 Flink版产品使用问题之yarn session模式中启动的任务链接是http IP,想把IP映射为主机hadoop,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
166 9
|
7月前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
【4月更文挑战第4天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)
94 4