关键信息总结 漏洞概述 CVE ID: CVE-2021-47581 严重性: 7.7/10 影响版本: <1.14.1 修复版本: 1.14.2 漏洞描述 Kyverno 存在一个拒绝服务(DoS)漏洞,由于不正确的 JMESPath 变量替换处理。攻击者可以通过更新 Kyverno 策略来利用此漏洞,这些策略使用 变量与 和 JMESPath 函数(例如: 或 )。这会导致一个 值被插入到策略结构中。后续的内部函数调用,特别是 ,当期望字符串值时,结果在遇到类型断言失败( )时崩溃。这会创建无限循环,导致 admission controller 中的工作线程耗尽,最终导致整个 admission controller 不可用,从而阻止新资源的创建。 影响 Audit 模式: 个别工作线程进入死循环并终止,而主进程通过启动新工作线程恢复,但持续的利用可能导致工作线程耗尽。 Enforce 模式: 整个控制器挂起并崩溃,需要由 Kubernetes 重新启动。这会导致策略执行、容器暂停和报告生成中断。 条件 攻击者需要权限创建或更新 Kyverno Policy 或 ClusterPolicy 资源。这通常是一个特权操作,但在某些环境中可能被委托。 后果 依赖策略执行、无法创建新资源、策略报告可见性丢失。 缓解措施 在 中添加对 的健壮处理。 查看 和 处理,防止评估错误(如未定义的函数)从 解析中产生。