Advisory · CVE-2026-122305
Self-referential variables can hang Kyverno's admission webhook
Kyverno before 1.19.2 lets low-privileged users hang the admission webhook with self-referential variable templates in substituteVariablesIfAny, causing unbounded substitution loops that exhaust CPU and memory and block cluster-wide admission. Kyverno rates it CVSS 4.0 8.3.
- Vendor
- Kyverno
- Product
- Kyverno
- Identifier / CWE
- CVE-2026-122305
CWE-835 - Action timing
- Immediate
Explain it like I’m five
A policy variable that points back at itself makes Kyverno chase its own tail forever, until the webhook runs out of CPU and stops answering for everyone.
- 01Crafted resource submitted
A low-privileged user creates a resource whose annotations re-introduce an embedded policy variable.
- 02Substitution loops
substituteVariablesIfAny expands the variable again and again with no bound.
- 03CPU and memory exhausted
The unbounded loop consumes the admission webhook's resources.
- 04Admission blocked
Cluster-wide admission stalls while the webhook is hung.
What happened
Kyverno disclosed CVE-2026-122305 for Kyverno before 1.19.2. The substituteVariablesIfAny function allows low-privileged users to hang the admission webhook with self-referential variable templates: a resource whose annotations re-introduce the embedded policy variable triggers unbounded substitution loops that exhaust CPU and memory and block cluster-wide admission.
The advisory rates it CVSS 4.0 8.3 and identifies Kyverno 1.19.2 as the fixed release.
What to do
- Inventory Kyverno installations and confirm the deployed version.
- Upgrade affected installations to Kyverno 1.19.2 or later using the project release guidance.
- While remediation is underway, limit who can submit resources carrying policy variable annotations.
- Watch admission webhook latency and resource usage for signs of substitution loops.
- Review recent resource submissions for self-referential variable templates.
Management note
A denial of service against the admission webhook is a denial of service against the whole cluster’s ability to change. It needs no privilege worth mentioning, so it belongs in the same patch window as the critical flaws.