Summary
| Parameter | Value |
|---|---|
| CVE ID | CVE-2026-122311 |
| Alert Source | GitHub Advisory - Critical Vulnerability |
| CVE Publication Year | 2026 |
| Date Published | 2026-11-05 |
| Vendor | Kyverno |
| Product | Kyverno |
| CVSS Score | 9.9 (critical) |
| EPSS Score | No data |
| CISA KEV | No |
| Ransomware | Not confirmed |
Vulnerability Description
Kyverno is a policy engine (admission controller) for Kubernetes, often used to enforce security rules in clusters shared by multiple teams. Release 1.19.2 fixes seven critical vulnerabilities; most of them let a user privileged only within their own namespace escape it and act with the permissions of Kyverno’s ServiceAccounts — in the worst case taking over the whole cluster:
- CVE-2026-122311 (CVSS 9.9) — versions from 1.16.0 before 1.19.2 fail to validate path segments in the resource argument of resource.get() and resource.post(). A tenant who can create a NamespacedValidatingPolicy can insert
..segments to read and write arbitrary cluster objects using the admission controller’s ServiceAccount, leading to cluster takeover. - CVE-2026-122310 (CVSS 9.9) — version 1.19.1 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 can hide
../segments behind#or?to reach cluster-scoped endpoints with Kyverno’s ServiceAccount, gaining cluster admin (an incomplete fix of an earlier flaw). - CVE-2026-122313 (CVSS 9.9) — versions from 1.17.0 before 1.19.2: the CEL output of NamespacedMutatingPolicy targetMatchConstraints.expression lacks namespace checks. An attacker can emit a literal target such as another tenant’s RoleBinding, which the cluster-wide background controller then mutates to add attacker subjects or alter Roles, NetworkPolicies and ConfigMaps.
- CVE-2026-122304 (CVSS 9.9) — versions from 1.17.0 before 1.19.2: the cleanup controller builds its context loader with a nil policy. A namespace admin can create a namespaced CleanupPolicy with apiCall or globalReference context entries to read cross-namespace Secrets and modify validatingwebhookconfigurations using the cleanup controller’s ServiceAccount.
- CVE-2026-122303 (CVSS 9.9) — versions from 1.17.0 before 1.19.2: in NamespacedMutatingPolicy mutate-existing, targetMatchConstraints.expression can return a CEL map literal fabricating a target with an attacker-chosen metadata.namespace, causing the privileged background controller to overwrite Secrets, Deployments or policies cluster-wide.
- CVE-2026-122302 (CVSS 9.8) — versions before 1.19.2: generate-rule admission checks verify the controller’s permissions, not the author’s. A namespace admin can create a namespaced Policy with generate rules targeting other namespaces or cluster-scoped kinds, making the background controller create or clone resources cluster-wide — beyond the author’s RBAC.
- CVE-2026-122321 (CVSS 9.1) — versions from 1.18.0 before 1.19.2: verifyImages caches verification results keyed by the image reference string (such as a tag) rather than the verified digest, so cache hits skip signature and attestation checks. An attacker who can submit workloads and move a registry tag can warm the cache with a signed image, repoint the tag and have Kyverno admit the unverified image, pinning it via mutateDigest.
Required Actions
Upgrade Kyverno to 1.19.2, which fixes all seven vulnerabilities. Until you upgrade:
- restrict the right to create and modify namespaced policies (Policy, CleanupPolicy, NamespacedValidatingPolicy, NamespacedMutatingPolicy) to trusted administrators — in multi-tenant clusters the tenants themselves are the attack vector,
- review existing namespaced policies for apiCall, globalReference, resource.get()/resource.post(), generate rules and targetMatchConstraints expressions,
- review RoleBindings, ClusterRoleBindings, Secrets and validatingwebhookconfigurations for unexpected changes made by Kyverno ServiceAccounts,
- in image verification policies, reference images by digest rather than by tag, and restrict who can move tags in your registry.
Who Is Affected?
The vulnerabilities affect organizations that use Kyverno as the policy engine in Kubernetes clusters (including managed distributions such as OpenShift, EKS, AKS or GKE where Kyverno is installed separately or with a platform). The highest risk applies to clusters shared by multiple teams or customers where tenants can create policies in their own namespaces, and to environments relying on Kyverno for image signature verification in the software supply chain.
Sources
Need help securing your systems? nFlo team offers vulnerability management and 24/7 SOC services. Contact us.
