HadoopYarnRESTAPI未授权访问攻击
- 行业动态
- 2025-05-13
- 12
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+ | 中危(需配置) | 依赖管理员手动启用安全认证机制 |
核心问题:
- 默认配置不安全:YARN REST API在默认安装中未强制启用认证。
- 网络暴露风险:API服务监听在
8088
端口(默认无防火墙限制),可被外部访问。 - 权限粒度粗放:即使启用认证,部分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集群是否存在未授权访问风险?
解答:
- 检查
yarn-site.xml
中是否配置了yarn.http.authentication.type
(值为none
表示未启用认证)。 - 使用
curl -k https://<rm-host>:8088/ws/v1/cluster/apps
测试是否需要凭证。 - 查看ResourceManager日志中是否存在非管理员用户的API访问记录。
问题2:修复后如何验证防御有效性?
解答:
- 功能测试:尝试用未授权用户访问API,应返回
401 Unauthorized
。 - 压力测试:模拟高频API调用,检查认证模块是否稳定。
- 日志审计:确认