{"id":"CVE-2026-122305","kind":"vulnerability","aliases":["CVE-2026-122305"],"related":[],"title":"Kyverno: self-referential variables let low-privileged users hang admission webhook","description":"Kyverno before 1.19.2 contains a denial of service vulnerability in substituteVariablesIfAny that allows low-privileged users to hang the admission webhook via self-referential variable templates. Attackers can create resources whose annotations re-introduce the embedded policy variable, causing unbounded substitution loops that exhaust CPU and memory and block cluster-wide admission.","summary":"Kyverno before 1.19.2 loops without bound when a resource's annotations re-introduce a policy variable into substitution, which exhausts CPU and memory. An attacker with low privileges can create such a resource and block cluster-wide admission.","severity":"high","cvss":8.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["infrastructure","kubernetes","kyverno","self-hosted"],"not_affected_if":["kyverno-not-installed","version-1.19.2-or-later"],"how_to_check":"- Check the installed Kyverno version with `kubectl get deploy -n kyverno kyverno-admission-controller -o jsonpath='{.spec.template.spec.containers[0].image}'`\n- Confirm whether your Kyverno version is below `1.19.2`","fix":"- Kyverno: move to `1.19.2` or later","status":"open","published_at":"2026-11-05T03:17:22+00:00","first_seen_at":"2026-11-05T03:31:41+00:00","triaged_at":"2026-11-05T03:33:22+00:00","updated_at":"2026-11-05T03:33:22+00:00","category":"infrastructure","confidence":0.7,"triage":{"at":"2026-11-05T03:33:22Z","model":"claude-haiku-5-5","output":{"fix":"- Kyverno: move to `1.19.2` or later","reach":"network","title":"Kyverno: self-referential variables let low-privileged users hang admission webhook","impact":"medium","summary":"Kyverno before 1.19.2 loops without bound when a resource's annotations re-introduce a policy variable into substitution, which exhausts CPU and memory. An attacker with low privileges can create such a resource and block cluster-wide admission.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["kubernetes","kyverno","self-hosted"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"cluster-wide admission webhook hangs, blocking resource creation","analyst_note":"","how_to_check":"- Check the installed Kyverno version with `kubectl get deploy -n kyverno kyverno-admission-controller -o jsonpath='{.spec.template.spec.containers[0].image}'`\n- Confirm whether your Kyverno version is below `1.19.2`","plain_action":"","needs_analyst":false,"not_affected_if":["kyverno-not-installed","version-1.19.2-or-later"],"who_is_affected":"Any Kubernetes cluster running Kyverno admission control before 1.19.2 that lets users without cluster-admin rights create resources is exposed. Clusters where only trusted operators can create resources, or that do not run Kyverno, can skip it.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"high"},"cost_usd":0.000698,"input_tokens":4292,"output_tokens":537,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-122305':16A,19A '-2026':15A,18A '1.19.2':28B,68C 'admiss':12A,65B,86C,121C 'allow':78C 'annot':36B,99C 'attack':51B,94C 'block':61B,117C 'bound':31B 'caus':107C 'cluster':63B,119C 'cluster-wid':62B,118C 'contain':69C 'cpu':47B,113C 'creat':56B,96C 'cve':14A,17A 'denial':71C 'embed':104C 'exhaust':46B,112C 'hang':11A,84C 'host':25B 'infrastructur':20B 'introduc':39B,102C 'kubernet':21B 'kyverno':1A,22B,26B,66C 'let':6A 'loop':29B,110C 'low':8A,53B,80C 'low-privileg':7A,79C 'memori':49B,115C 'polici':41B,105C 'privileg':9A,54B,81C 're':38B,101C 're-introduc':37B,100C 'referenti':4A,91C 'resourc':34B,59B,97C 'self':3A,24B,90C 'self-host':23B 'self-referenti':2A,89C 'servic':73C 'substitut':44B,109C 'substitutevariablesifani':76C 'templat':93C 'unbound':108C 'user':10A,82C 'variabl':5A,42B,92C,106C 'via':88C 'vulner':74C 'webhook':13A,87C 'whose':98C 'wide':64B,120C 'without':30B","nicknames":[],"mitigations":[],"who_affected":"Any Kubernetes cluster running Kyverno admission control before 1.19.2 that lets users without cluster-admin rights create resources is exposed. Clusters where only trusted operators can create resources, or that do not run Kyverno, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","infrastructure","kubernetes","kyverno","selfhosted"],"campaign_type":null,"first_public_at":"2026-10-21T15:41:46+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-122305","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-122305","severity":null,"published_at":"2026-11-05T03:17:22+00:00","modified_at":"2026-11-05T03:17:22+00:00","first_seen_at":"2026-11-05T03:31:41+00:00","fetched_at":"2026-11-05T03:31:41+00:00","note":null}],"documents":[{"id":72688,"url":"https://github.com/kyverno/kyverno/security/advisories/GHSA-338x-hgrv-626h","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-21T15:41:46+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":72689,"url":"https://www.vulncheck.com/advisories/kyverno-before-1.19.2-denial-of-service-via-nested-variable-substitution-loop","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"exploit_sources":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}