漏洞概述

External Secrets Operator(ESO)是一个用于从第三方密钥管理服务中读取信息并自动将其注入为 Kubernetes Secret 的工具。在版本 0.20.2 至 1.2.0 之前,其模板函数 getSecretKey 存在一个安全缺陷,允许攻击者利用 external-secrets 控制器的 RoleBinding 权限,跨命名空间读取敏感密钥,从而绕过 ESO 内置的安全机制。该函数已在 v1.2.0 中被彻底移除。

漏洞详情

  • CVE 编号:CVE-2026-22822
  • 漏洞类型:权限绕过 / 跨命名空间信息泄露(CWE-863:授权机制不正确)
  • CVSS 评分:9.3(CRITICAL)
  • 影响版本:External Secrets Operator 0.20.2 至 1.1.x(1.2.0 及以上版本已修复)

影响范围

所有使用 External Secrets Operator 版本在 0.20.2(含)至 1.2.0(不含)之间的 Kubernetes 集群均受影响,特别是启用了 getSecretKey 模板函数的 ExternalSecret 资源配置。

风险分析

攻击者若具备低权限(如普通命名空间用户),可通过构造恶意的 ExternalSecret 资源,利用 getSecretKey 函数以 external-secrets 控制器的权限跨命名空间读取任意密钥,导致敏感信息泄露、权限提升甚至集群接管。由于攻击复杂度低且无需用户交互,该漏洞具有极高的可利用性。

修复建议

  • 立即升级 External Secrets Operator 至 v1.2.0 或更高版本,该版本已完全移除存在风险的 getSecretKey 函数。
  • 若无法立即升级,建议通过策略引擎(如 Kyverno、OPA/Gatekeeper、Kubewarden 等)编写策略,禁止在 ExternalSecret 资源中使用 getSecretKey 模板函数,作为临时缓解措施。

参考链接