Kyverno ServiceAccount Token 泄露漏洞总结 漏洞概述 Kyverno 的 功能在 中自动将准入控制器的 ServiceAccount (SA) Token 附加到出站 HTTP 请求中。由于服务 URL 缺乏验证(未检查协议、IP 限制或 allowlist),攻击者可以构造恶意请求将高权限的 SA Token 泄露给外部服务器。 核心原因: 1. URL 未验证: 策略中的 URL 直接拼接,未做安全校验。 2. Token 自动注入: 如果请求没有 Authorization 头,Kyverno 会自动读取并注入其自身的 SA Token。 影响范围 受影响版本: Kyverno v1.17.1 (Helm chart 默认安装)。 严重性: High (CVSS 8.1/10)。 后果: 攻击者获取 SA Token 后,可修改 Webhook 配置,导致集群内所有 API 请求经过攻击者控制的服务器,从而劫持流量、注入恶意容器或提升权限。 修复方案 修复版本: v1.16.4 及以上。 建议措施: 1. 使用受限权限的 Token 代替完整的 SA Token。 2. 添加 URL 验证(如限制私有 IP 范围、元数据端点)。 利用代码 (POC) 1. 攻击者监听脚本 (Python) 2. 恶意 ClusterPolicy 配置 (YAML) 3. 触发测试 4. 验证权限 (获取 Token 后)**