导语:Payara JMX 认证绕过漏洞 CVE-2026-90908 以 CVSS 9.3 的严重级评分进入企业 Java 中间件安全视野——攻击者无需任何凭据,仅通过伪造客户端主机地址即可突破 GenericAdminAuthenticator 的管理访问限制,直取 MBean 服务器并走向远程代码执行。本文以架构师视角完整拆解这条从地址伪造到 RCE 的攻击链路,并给出可直接落地的生产加固方案。
一、漏洞速览:Payara JMX 认证绕过为何是 9.3 分
CVE-2026-90908 的核心问题出在 Azul Payara Server 与 Azul Payara Micro 的 GenericAdminAuthenticator 组件。该组件在 JMX/RMI 管理通道上承担“管理员身份判定”职责,但其判定逻辑依赖客户端上报的主机地址(host address)作为可信输入。由于该地址在 RMI 协议层可被攻击者伪造,认证边界被彻底击穿。
从 CVSS 9.3 的评分构成来看,这是一个典型的“网络可达 + 无需认证 + 高机密性/完整性/可用性影响”的组合。攻击者一旦绕过管理访问限制,即可对 MBean 服务器执行任意管理操作,而 JMX 生态中大量 MBean 具备调用任意方法、加载类、触发 JNDI 查找的能力,这为远程代码执行提供了天然跳板。
Payara Micro 仅在显式启用 JMX connector 时受影响;而 Payara Server 的默认管理部署形态往往暴露 JMX/RMI 端口。请立即盘点生产环境中所有开放 8686/4848 及自定义 RMI 端口的 Payara 实例,尤其是可被公网或跨网段访问的节点。
企业级架构规范
flowchart TD
subgraph 攻击接入层 ["攻击接入层 (Attacker & Network Tier)"]
A["远程未认证攻击者"] --> B["构造 RMI 连接并伪造客户端主机地址"]
end
subgraph 认证判定层 ["认证判定层 (Authentication Tier)"]
B --> C["GenericAdminAuthenticator 接收 host address"]
C --> D{"主机地址是否命中管理白名单"}
D -->|"伪造命中"| E["认证通过 授予管理员上下文"]
D -->|"未命中"| F["拒绝访问"]
end
subgraph 管理执行层 ["管理执行层 (JMX MBean Tier)"]
E --> G["连接 MBean Server"]
G --> H["调用高危 MBean 操作 (类加载/JNDI/脚本)"]
end
subgraph 影响层 ["影响层 (Impact Tier)"]
H --> I["远程代码执行 RCE"]
I --> J[("服务器完全失陷")]
end
二、根因剖析:主机地址为何不能作为认证凭据
2.1 GenericAdminAuthenticator 的信任模型缺陷
在 JMX/RMI 的经典实现中,服务端通过 RMIServer 与 RMIConnector 建立连接,客户端在握手阶段会携带自身标识信息。GenericAdminAuthenticator 的设计假设是“客户端主机地址由底层网络栈保证真实”,但 RMI 协议本身并不对 host address 做密码学绑定或反向校验。这意味着攻击者可以在协议载荷中填入任意地址,而服务端若仅做字符串匹配或前缀匹配,就会把伪造值当作可信身份。
这与传统 Web 场景中“信任 X-Forwarded-For 头”的错误如出一辙:把可被客户端控制的元数据当作安全边界。正确的做法是基于密码学凭据(TLS 客户端证书、Kerberos、强口令 + 挑战响应)建立身份,而非基于网络位置做隐式信任。
2.2 从认证绕过到 RCE 的放大效应
JMX 管理面之所以危险,在于其设计目标就是“远程管理 Java 进程”。MBean Server 上常见的 MLet、DiagnosticCommand、JNDI 相关 MBean 都具备执行任意逻辑的能力。攻击者获得管理员上下文后,典型利用路径包括:
- 通过
MLetMBean 从远程 URL 加载并注册恶意 MBean,直接执行任意字节码; - 调用 JNDI 相关操作触发反序列化或远程类加载链;
- 利用诊断命令 MBean 执行系统命令或读写任意文件;
- 篡改应用配置、注入 Filter/Servlet,实现持久化后门。
JMX 管理面必须被视为“最高权限平面”,其网络暴露面应遵循最小化原则:默认仅监听回环地址或独立管理网段,且必须叠加 TLS 双向认证。任何基于 IP/主机名的白名单都只能作为纵深防御的附加层,绝不能作为唯一认证手段。
三、影响面评估:哪些 Payara 部署真正暴露
并非所有 Payara 实例都处于同等风险。需要结合部署形态、网络拓扑与 JMX 配置综合判断。下表给出典型场景的风险矩阵,便于架构师快速定位高优先级资产。
| 部署形态 | JMX 状态 | 网络暴露 | 风险等级 | 处置优先级 |
|---|---|---|---|---|
| Payara Server 独立域 | 默认启用 | 公网/跨网段可达 | 严重 | P0 立即处置 |
| Payara Server 集群节点 | 默认启用 | 内网可达 | 高 | P1 本周内 |
| Payara Micro | 未启用 connector | — | 不受影响 | 保持监控 |
| Payara Micro | 显式启用 connector | 任意可达 | 严重 | P0 立即处置 |
| 容器化 Payara | 默认启用 | 仅 Pod 内回环 | 中 | 随镜像升级 |
特别提醒:在 Kubernetes 环境中,若 Service 类型误配为 LoadBalancer 或 NodePort 且指向管理端口,风险会瞬间从“内网”升级为“公网”。请优先核查 Service 与 NetworkPolicy 的端口放行规则。
四、生产加固与补丁落地:从检测到修复的完整路径
4.1 第一步:资产与暴露面排查
在打补丁之前,先确认“谁在监听、谁可达”。以下命令可快速定位 Payara 进程及其 JMX/RMI 监听端口。
# 定位 Payara 进程 ps -ef | grep -Ei 'payara|glassfish' | grep -v grep # 查看监听端口(重点关注 8686/4848 及动态 RMI 端口) ss -lntp | grep -Ei 'java|8686|4848' # 检查 JMX connector 是否启用 grep -RniE 'jmx|rmi|connector' $PAYARA_HOME/glassfish/domains/*/config/ 2>/dev/null | head -50
4.2 第二步:临时缓解(无法立即升级时)
若生产环境暂时无法停机升级,应立即收缩管理面暴露范围。核心思路是“网络层隔离 + 认证层加固”双管齐下。
- 将 JMX/RMI 端口绑定到回环地址或独立管理网卡,禁止业务网段访问;
- 通过防火墙/安全组仅放行运维跳板机 IP,并启用连接审计;
- 为 JMX 通道启用 TLS 双向认证,使身份判定不再依赖主机地址;
- 关闭不必要的 MLet 与诊断命令 MBean,削减 RCE 利用面。
仅修改 jmxremote.access 或调整白名单 IP 并不能修复本漏洞——因为攻击者伪造的正是主机地址本身。临时缓解必须落到“网络不可达”或“密码学认证”两个层面,否则只是心理安慰。
4.3 第三步:升级补丁与验证
官方修复版本已针对 GenericAdminAuthenticator 的地址信任逻辑进行重构。升级后需验证:JMX 连接在伪造 host address 时被正确拒绝,且合法管理员凭据仍可正常管理。
点击展开:升级与验证执行命令
# 1. 备份域配置
cp -a $PAYARA_HOME/glassfish/domains/$DOMAIN/config
/backup/payara-config-$(date +%F)
# 2. 停止域并升级到修复版本
$PAYARA_HOME/bin/asadmin stop-domain $DOMAIN
# 按官方发布说明替换发行包后重启
$PAYARA_HOME/bin/asadmin start-domain $DOMAIN
# 3. 验证 JMX 端口与认证行为
ss -lntp | grep -E '8686|4848'
# 使用伪造 host address 的客户端尝试连接,应被拒绝
# 使用合法凭据 + TLS 客户端证书连接,应成功
五、架构级反思:管理面安全的长期主义
CVE-2026-90908 再次印证了一个反复出现的模式:把“网络位置”当作“身份”。从早期的 rlogin/rsh 信任主机,到 X-Forwarded-For 伪造,再到今天的 Payara JMX 认证绕过,本质都是同一类信任模型错误。对于架构师而言,这提示我们在设计任何管理面时都应遵循三条铁律:
- 身份必须来自密码学凭据,而非 IP、主机名、请求头等可被客户端控制的元数据;
- 管理面与业务面物理/逻辑隔离,默认拒绝一切非必要访问;
- 高危 MBean 默认关闭,按需开启并全程审计,把 RCE 利用链在源头切断。
对于仍在使用 Payara 的团队,建议把本次处置沉淀为常态化的“中间件管理面基线”:定期扫描 JMX/RMI 暴露面、强制 TLS 双向认证、将管理端口纳入 SOC 监控。唯有把 Payara JMX 认证绕过这类漏洞的修复动作转化为架构约束,才能避免下一次同类 CVE 再次击穿生产环境。
本文核心技术背景源自 GitHub Security Advisory 官方通告:
GHSA-qcx2-v78c-8gq4 (CVE-2026-90908 · Azul Payara Server / Payara Micro)
