当前位置:首页 > 行业动态 > 正文

HadoopYarnRESTAPI未授权访问攻击

Hadoop Yarn REST API未授权访问可致集群资源泄露,需强化

Hadoop Yarn REST API未授权访问攻击分析与防御

问题背景与攻击原理

Hadoop YARN(Yet Another Resource Negotiator)是Hadoop的资源管理系统,负责集群资源的调度和分配,YARN通过REST API提供资源管理、作业提交、应用状态查询等功能,默认情况下,部分版本的YARN REST API未启用身份验证或授权控制,导致未经授权的攻击者可以直接访问这些接口,执行反面操作。

攻击原理
攻击者通过未授权的REST API端点,绕过身份验证机制,直接向YARN发送HTTP请求。

  • 提交反面作业:调用POST /ws/v1/cluster/apps提交消耗资源的作业(如无限循环的MapReduce任务)。
  • 获取集群敏感信息:调用GET /ws/v1/cluster/nodes获取所有节点的状态、IP地址、资源使用情况。
  • 终止合法作业:调用DELETE /ws/v1/cluster/apps/{appId}杀死其他用户的作业。

影响范围与破绽成因

版本范围 默认风险等级 成因分析
Hadoop 2.x ~ 3.2 高危 默认未启用HTTP认证(如Basic/Digest)或Kerberos
Hadoop 3.3+ 中危(需配置) 依赖管理员手动启用安全认证机制

核心问题

  1. 默认配置不安全:YARN REST API在默认安装中未强制启用认证。
  2. 网络暴露风险:API服务监听在8088端口(默认无防火墙限制),可被外部访问。
  3. 权限粒度粗放:即使启用认证,部分API仍可能缺乏细粒度的权限控制(如ACL)。

攻击危害与实际案例

危害类型 具体影响
资源耗尽攻击 提交大量反面作业占用集群资源,导致合法业务中断
数据泄露 获取集群拓扑、节点信息,为后续渗透提供情报
横向移动 结合其他破绽(如未授权SSH)控制节点

实际案例

  • 2021年某金融机构渗透测试:攻击者通过YARN API提交分布式缓存任务,窃取HDFS中的敏感数据。
  • 2020年开源集群攻击:利用未授权API终止竞争企业的MapReduce作业,造成业务延迟。

攻击检测与防御措施

攻击检测指标
| 异常行为 | 检测方法 |
|—————————–|—————————————|
| 高频API调用(如每秒多次提交) | 监控/ws/v1/cluster/apps接口访问频率 |
| 非管理员IP访问敏感端点 | 审计日志中出现陌生源IP |
| 资源使用率突增 | 监控YARN ResourceManager的CPU/内存峰值 |

防御措施
| 措施 | 作用 | 实施建议 |
|—————————–|—————————————|———————————————–|
| 启用HTTP认证(Basic/Digest) | 强制API访问需凭证 | 修改yarn-site.xml添加yarn.http.authentication.type |
| 部署Kerberos认证 | 强化身份验证安全性 | 集成Hadoop KDC,配置yarn.resourcemanager.principal |
| 网络隔离(ACL/防火墙) | 限制API访问来源 | 仅允许管理网段访问8088端口 |
| 细粒度权限控制(ACL) | 限制用户对特定API的操作权限 | 配置yarn.acl-enable并定义用户-资源映射 |
| API加密(HTTPS) | 防止流量嗅探与改动 | 生成SSL证书,启用yarn.https-enabled |

防御效果对比表

防御方案 优点 缺点
基础HTTP认证 快速部署,兼容旧版本Hadoop 密码易被破解,安全性较低
Kerberos集成 强身份验证,支持单点登录(SSO) 配置复杂,需额外维护KDC
网络层防火墙 简单有效,阻止外部非规访问 无法防御内部威胁或已载入的合法用户
HTTPS加密 保护数据传输安全,防中间人攻击 性能开销较大,需处理证书更新

FAQs

问题1:如何确认当前YARN集群是否存在未授权访问风险?
解答

  1. 检查yarn-site.xml中是否配置了yarn.http.authentication.type(值为none表示未启用认证)。
  2. 使用curl -k https://<rm-host>:8088/ws/v1/cluster/apps测试是否需要凭证。
  3. 查看ResourceManager日志中是否存在非管理员用户的API访问记录。

问题2:修复后如何验证防御有效性?
解答

  1. 功能测试:尝试用未授权用户访问API,应返回401 Unauthorized
  2. 压力测试:模拟高频API调用,检查认证模块是否稳定。
  3. 日志审计:确认
0