{"id":"CVE-2026-122310","kind":"vulnerability","aliases":["CVE-2026-122310"],"related":[],"title":"Kyverno: path validation bypass lets namespace users gain cluster admin","description":"Kyverno from 1.19.1 before 1.19.2 validates a Policy's context.apiCall urlPath after cleaning it but executes the raw path, whose fragment or query the Kubernetes client discards. A namespace-scoped user who can create a Policy can hide ../ segments behind # or ? to reach cluster-scoped endpoints with Kyverno's ServiceAccount, gaining cluster admin.","summary":"Kyverno checks a Policy's context.apiCall urlPath after cleaning it, but then runs the raw path, which drops anything after a # or ?. A user who can create a Policy in their namespace can hide ../ segments there to reach cluster-scoped endpoints using Kyverno's ServiceAccount, which gives cluster admin.","severity":"critical","cvss":9.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["kubernetes","kyverno","package"],"not_affected_if":["kyverno-1.19.2-or-later","kyverno-below-1.19.1"],"how_to_check":"- Check the installed Kyverno version with `kubectl get deploy -n kyverno -o jsonpath='{.items[*].spec.template.spec.containers[*].image}'`\n- Look for Policies or ClusterPolicies that use context.apiCall with urlPath containing # or ?","fix":"- Kyverno: move to `1.19.2` or later (from 1.19.1 onward, before 1.19.2 is affected)","status":"open","published_at":"2026-11-05T03:17:23+00:00","first_seen_at":"2026-11-05T03:31:41+00:00","triaged_at":"2026-11-05T03:33:02+00:00","updated_at":"2026-11-05T03:33:02+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-05T03:33:02Z","model":"claude-haiku-5-5","output":{"fix":"- Kyverno: move to `1.19.2` or later (from 1.19.1 onward, before 1.19.2 is affected)","reach":"network","title":"Kyverno: path validation bypass lets namespace users gain cluster admin","impact":"high","summary":"Kyverno checks a Policy's context.apiCall urlPath after cleaning it, but then runs the raw path, which drops anything after a # or ?. A user who can create a Policy in their namespace can hide ../ segments there to reach cluster-scoped endpoints using Kyverno's ServiceAccount, which gives cluster admin.","audience":"businesses","category":"package","nicknames":[],"who_cares":["kubernetes","kyverno"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Attacker gains cluster admin through Kyverno's ServiceAccount","analyst_note":"Confirm the fixed version and any workaround from the vendor advisory at github.com and the VulnCheck page; the sources do not give detection steps.","how_to_check":"- Check the installed Kyverno version with `kubectl get deploy -n kyverno -o jsonpath='{.items[*].spec.template.spec.containers[*].image}'`\n- Look for Policies or ClusterPolicies that use context.apiCall with urlPath containing # or ?\n- unknown whether other checks are needed","plain_action":"","needs_analyst":true,"not_affected_if":["kyverno-below-1.19.1","kyverno-1.19.2-or-later"],"who_is_affected":"Clusters running Kyverno from 1.19.1 before 1.19.2 where some users can create Policies in their own namespace. The data path is a Policy's context.apiCall urlPath, so the exposure depends on who can write Policies. Clusters where Policy creation is limited to trusted administrators are lower risk, but the sources do not say how common that setup is.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"critical"},"cost_usd":0.000778,"input_tokens":4314,"output_tokens":693,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-122310':13A,16A '-2026':12A,15A '1.19.1':72C '1.19.2':74C 'admin':10A,69B,124C 'anyth':38B 'behind':110C 'bypass':4A 'check':21B 'clean':28B,82C 'client':95C 'cluster':9A,59B,68B,115C,123C 'cluster-scop':58B,114C 'context.apicall':25B,79C 'creat':46B,104C 'cve':11A,14A 'discard':96C 'drop':37B 'endpoint':61B,117C 'execut':85C 'fragment':90C 'gain':8A,122C 'give':67B 'hide':53B,108C 'kubernet':17B,94C 'kyverno':1A,18B,20B,63B,70C,119C 'let':5A 'namespac':6A,51B,99C 'namespace-scop':98C 'packag':19B 'path':2A,35B,88C 'polici':23B,48B,77C,106C 'queri':92C 'raw':34B,87C 'reach':57B,113C 'run':32B 'scope':60B,100C,116C 'segment':54B,109C 'serviceaccount':65B,121C 'urlpath':26B,80C 'use':62B 'user':7A,43B,101C 'valid':3A,75C 'whose':89C","nicknames":[],"mitigations":[],"who_affected":"Clusters running Kyverno from 1.19.1 before 1.19.2 where some users can create Policies in their own namespace. The data path is a Policy's context.apiCall urlPath, so the exposure depends on who can write Policies. Clusters where Policy creation is limited to trusted administrators are lower risk, but the sources do not say how common that setup is.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["critical","kubernetes","kyverno","package"],"campaign_type":null,"first_public_at":"2026-10-21T15:46:02+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/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-122310","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-122310","severity":null,"published_at":"2026-11-05T03:17:23+00:00","modified_at":"2026-11-05T03:17:23+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":72698,"url":"https://github.com/kyverno/kyverno/security/advisories/GHSA-3xfv-vq8x-qhg4","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-21T15:46:02+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":72699,"url":"https://www.vulncheck.com/advisories/kyverno-1.19.1-before-1.19.2-privilege-escalation-via-policy-apicall-urlpath","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"}