Cloudera Manager /jmx 接口未授权信息泄露漏洞复现

Wayyt  4小时前

Cloudera Manager /jmx 接口未授权信息泄露漏洞复现

0x00 漏洞概述

Cloudera Manager 是 Cloudera 公司推出的一款 Hadoop 集群管理软件,提供集群自动化安装、中心化管理、集群监控与报警等能力,在国内外的 Hadoop 大数据部署中占有相当比例的市场份额。该软件通常部署在企业内网或 DMZ 区域的管理节点上,通过 Web 控制台对整个集群进行运维管理。

该漏洞的核心问题在于:Cloudera Manager 暴露的 /jmx 路径存在未授权访问问题,攻击者无需任何认证凭证即可通过 HTTP GET 请求直接访问该路径,获取服务端已加载类(MBean)的元数据信息。攻击者可借此查看已加载的类的信息,这些信息可为进一步攻击提供帮助。

综合技术分析资料,Cloudera Manager 在 5.13.4 之前、5.14.4 之前的 5.14.x 系列、5.15.1 之前的 5.15.x 系列版本中存在信息泄露问题(对应公开编号 CVE-2018-10815,CWE-200 信息暴露类)。需要指出的是,公开 CVE 描述侧重于「只读用户可访问敏感集群信息」,其官方 CVSS 3.0 评分向量包含低权限前提(PR:L),而 /jmx 路径在部分部署环境下可以完全未授权访问,两者属于同一时期披露的相关信息泄露问题,具体关联关系属于推断,实际影响范围以部署环境的认证配置为准。

0x01 影响范围

依据可核实的公开信息,受影响版本范围如下:

  • Cloudera Manager 5.13.4 之前的版本;
  • 5.14.0(含)至 5.14.4(不含)之间的 5.14.x 系列;
  • 5.15.0(含)至 5.15.1(不含)之间的 5.15.x 系列。

漏洞判定特征:目标服务的页面标题包含 Firehose_SERVICE_MONITORING,或页面正文包含 <h1>Firehose_SERVICE_MONITORING Status</h1> 字样。命中上述特征且 /jmx 路径可直接访问的环境,通常即处于影响范围内。

Cloudera Manager 管理端口通常运行在 7180(HTTP)或 7181(HTTPS)端口,实际暴露端口以目标环境配置为准。值得注意的是,/jmx 接口在部分版本中默认未启用强制认证,导致该调试性质的管理接口直接暴露给网络可达的访问者。

0x02 漏洞分析

/jmx 是 Java Web 容器及管理框架中常见的 JMX(Java Management Extensions)远程查询端点。JMX 体系将服务器内部运行状态封装为若干 MBean 对象,每个 MBean 以 ob jectName 唯一标识,并携带属性、操作等元数据。正常情况下,此类接口仅供运维人员进行运行状态诊断,应当配置严格的访问控制。

从技术分析角度来看,该漏洞的成因可以归纳为以下几点:

1. 认证缺失/jmx 路径未被纳入 Cloudera Manager 的会话认证体系。管理控制台的其余页面要求登录会话,而该路径直接由底层 JMX 查询 Servlet 响应,绕过了认证过滤器链。

2. 信息聚合度过高:一次 /jmx 查询即可枚举服务端全部已加载的 MBean,每个 MBean 对象均包含 modelerTypeclassNameob jectName 等字段,等于将服务端的内部类结构、组件构成、配置参数一次性吐出。

3. Firehose 监控页面特征暴露Firehose_SERVICE_MONITORING 状态页是 Cloudera Manager 服务监控组件的标志性页面,攻击者可借助该特征低成本识别目标,再顺藤摸瓜访问同端口下的 /jmx

泄露内容中,MBean 的类名与 ob jectName 可帮助攻击者构建目标组件画像(例如确认具体运行的 Cloudera 版本、已启用的服务角色),部分 MBean 属性还可能包含文件路径、监听地址、内存与线程状态等运行时细节,这些信息对后续定位管理入口、构造针对性攻击载荷具有直接价值。

0x03 利用链与请求包

该漏洞的利用链极短:识别目标 → 未授权请求 /jmx → 解析响应中的 MBean 元数据。全程无需登录、无需构造任何请求体。

利用步骤

第一步,确认目标为 Cloudera Manager。可通过访问管理端口首页,观察标题或正文是否包含 Firehose_SERVICE_MONITORING 特征字样。

第二步,直接向 /jmx 路径发起未认证 GET 请求。完整请求包示例如下(目标以 192.0.2.10 示意地址为例,实际端口以环境为准):

GET /jmx HTTP/1.1
Host: 192.0.2.10:7180
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
Accept: */*
Connection: close

第三步,观察响应。若服务端返回 HTTP 状态码 200,且响应体为 JMX 查询格式的 JSON/xm l 元数据、其中包含 modelerType 字样,则说明该接口可未授权访问,漏洞存在。

命中时,响应体形如(节选示意):

HTTP/1.1 200 OK
Content-Type: application/json
Connection: close

{
  "beans": [
    {
      "modelerType": "org.apache.hadoop.metrics2.impl.MetricsSystemImpl",
      "ob jectName": "hadoop:service=...,name=...",
      ...
    },
    {
      "modelerType": "catalina.mbeans.GlobalResourcesLifecycleListener",
      ...
    }
  ]
}

响应中的每个对象条目都会携带 modelerType 字段,指向该 MBean 对应的 Java 类;ob jectName 则标明其所属服务与名称空间。攻击者解析该响应即可获得服务端组件构成、类结构及部分运行时属性的清单。

第四步,攻击者基于泄露的类名、ob jectName 与属性值绘制目标画像,例如确认集群角色构成、定位可进一步探测的服务端口与路径,为后续攻击(弱口令尝试、针对特定组件的历史漏洞利用等)提供信息支撑。

判定要点归纳:请求无需任何 Cookie 或 Token;follow_redirect 行为上无需跟随跳转,直接返回 200 即可判定;命中特征为响应体中的 modelerType 字符串——该字段是 JMX modeler 注册的每个 MBean 都会输出的固有属性,误报率低,是识别 /jmx 元数据输出的可靠指纹。

0x04 检测与修复建议

检测建议:

1. 资产排查:核查公网、办公网边界及第三方托管环境中的 Cloudera Manager 部署,确认 7180/7181 等管理端口及 /jmx 路径的暴露范围与运行版本。

2. 特征验证:向 /jmx 发起未认证 GET 请求,若返回 200 且响应体包含 modelerType,即可判定接口处于未授权暴露状态。

3. 日志审计:检查 Web 访问日志中针对 /jmx 的异常访问记录,确认是否已发生信息泄露。

修复建议:

1. 核对厂商安全公告中的受影响范围,升级至官方修复版本(5.13.4、5.14.4、5.15.1 或更高)或更高版本;升级前备份配置和数据。

2. 暂不能升级时,关闭调试和示例接口,禁止对配置文件的直接访问,通过 ACL 或 VPN 限制管理端口的访问来源,确保仅运维网段可达。

3. 如无必要,禁止公网直接访问 Cloudera Manager 管理端口,可在防火墙或安全设备上配置访问策略与白名单。

4. 确认发生过未授权访问后,立即轮换密码、密钥、会话等可能泄露的凭据,并排查后续异常操作痕迹。

0x05 参考资料

1. https://issues.cloudera.org/browse/DISTRO-852

2. https://community.cloudera.com/t5/Support-Questions/Enable-HSTS-header-for-Cloudera-Management-Services-Host/m-p/407354

3. https://www.cloudera.com/documentation/other/security-bulletins/topics/Security-Bulletin.html

4. https://avd.aliyun.com/detail?id=AVD-2018-10815

5. https://vulners.com/cvelist/CVELIST:CVE-2018-10815

最新评论

昵称
邮箱
提交评论