{"id":"CVE-2026-122312","kind":"vulnerability","aliases":["CVE-2026-122312"],"related":[],"title":"Kyverno: namespaced policies can read cluster-scoped resources outside their namespace","description":"Kyverno from 1.19.1 before 1.19.2 contains a namespace isolation bypass in APICall Fetch() in pkg/engine/apicall/apiCall.go because path.Clean treats '?' as a path character, letting the namespace regex match segments inside the query string. Users who can create namespaced policies can supply a URLPath like /api/v1/nodes?x=/namespaces/default/ that passes validation while client-go requests the cluster-scoped endpoint, reading resources outside their namespace.","summary":"Kyverno's APICall feature fails to separate namespaces when a policy URL path contains a query string, so a user who can create namespaced policies can make requests the namespace check should block. The result is that such a user can read Kubernetes resources outside their own namespace.","severity":"high","cvss":8.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["infrastructure","kubernetes","kyverno","platform-team"],"not_affected_if":["admin-only-policy-creation","kyverno-not-used","no-apicall-policies"],"how_to_check":"- Check the Kyverno version with `kubectl get deployment -n kyverno kyverno-admission-controller -o jsonpath='{.spec.template.spec.containers[0].image}'`\n- Look for policies that use `apiCall` with a `urlPath` in your cluster, and check who can create policies in namespaces","fix":"- Kyverno: move to `1.19.2` (fixed version in the product range from 1.19.1)","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:19+00:00","updated_at":"2026-11-05T03:33:19+00:00","category":"infrastructure","confidence":0.7,"triage":{"at":"2026-11-05T03:33:19Z","model":"claude-haiku-5-5","output":{"fix":"- Kyverno: move to `1.19.2` (fixed version in the product range from 1.19.1)","reach":"internet","title":"Kyverno: namespaced policies can read cluster-scoped resources outside their namespace","impact":"medium","summary":"Kyverno's APICall feature fails to separate namespaces when a policy URL path contains a query string, so a user who can create namespaced policies can make requests the namespace check should block. The result is that such a user can read Kubernetes resources outside their own namespace.","audience":"businesses","category":"infrastructure","nicknames":[],"who_cares":["kubernetes","kyverno","platform-team"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"Reads cluster resources outside its namespace, such as nodes and other namespaces.","analyst_note":"","how_to_check":"- Check the Kyverno version with `kubectl get deployment -n kyverno kyverno-admission-controller -o jsonpath='{.spec.template.spec.containers[0].image}'`\n- Look for policies that use `apiCall` with a `urlPath` in your cluster, and check who can create policies in namespaces","plain_action":"","needs_analyst":false,"not_affected_if":["kyverno-not-used","admin-only-policy-creation","no-apicall-policies"],"who_is_affected":"Teams running Kyverno 1.19.1 (before 1.19.2) that let users create namespaced policies using APICall. Exposure depends on users being able to write policies that call the Kubernetes API, so clusters where only platform admins create policies carry less risk. Clusters not running Kyverno are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000738,"input_tokens":4352,"output_tokens":605,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-122312':15A,18A '-2026':14A,17A '/api/v1/nodes':116C '/namespaces/default':118C '1.19.1':75C '1.19.2':77C 'apical':27B,84C 'block':57B 'bypass':82C 'charact':94C 'check':55B 'client':124C 'client-go':123C 'cluster':7A,129C 'cluster-scop':6A,128C 'contain':38B,78C 'creat':47B,108C 'cve':13A,16A 'endpoint':131C 'fail':29B 'featur':28B 'fetch':85C 'go':125C 'infrastructur':19B 'insid':101C 'isol':81C 'kubernet':20B,67B 'kyverno':1A,21B,25B,73C 'let':95C 'like':115C 'make':51B 'match':99C 'namespac':2A,12A,32B,48B,54B,72B,80C,97C,109C,136C 'outsid':10A,69B,134C 'pass':120C 'path':37B,93C 'path.clean':89C 'pkg/engine/apicall/apicall.go':87C 'platform':23B 'platform-team':22B 'polici':3A,35B,49B,110C 'queri':40B,103C 'read':5A,66B,132C 'regex':98C 'request':52B,126C 'resourc':9A,68B,133C 'result':59B 'scope':8A,130C 'segment':100C 'separ':31B 'string':41B,104C 'suppli':112C 'team':24B 'treat':90C 'url':36B 'urlpath':114C 'user':44B,64B,105C 'valid':121C 'x':117C","nicknames":[],"mitigations":[],"who_affected":"Teams running Kyverno 1.19.1 (before 1.19.2) that let users create namespaced policies using APICall. Exposure depends on users being able to write policies that call the Kubernetes API, so clusters where only platform admins create policies carry less risk. Clusters not running Kyverno are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","infrastructure","kubernetes","kyverno","platformteam"],"campaign_type":null,"first_public_at":"2026-10-21T15:47:40+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:N/SA:N/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-122312","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-122312","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":72702,"url":"https://github.com/kyverno/kyverno/commit/f67231def576eb0ad153dd8cbfc836908ab14c14","title":"Patch: github.com","kind":"other","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":72703,"url":"https://github.com/kyverno/kyverno/security/advisories/GHSA-pcx2-xcq4-65vf","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-10-21T15:47:40+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":72704,"url":"https://www.vulncheck.com/advisories/kyverno-1.19.1-before-1.19.2-namespace-isolation-bypass-via-apicall-urlpath-query-string","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"}