Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain tenant create rights on namespacedmutatingpolicies
-
DeliveryAuthor NamespacedMutatingPolicy with generator.apply targeting kube-system
-
ExploitAdmission controller evaluates matchConditions with cluster privileges
-
ExecutionController creates attacker-defined RoleBinding/Secret cross-namespace
-
PersistBind elevated role to attacker identity
-
ImpactEscalate to cluster-wide control
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must be an authenticated Kubernetes user (PR:L) holding 'create' permission on namespacedmutatingpolicies.policies.kyverno.io within at least one namespace, and the cluster must run Kyverno 1.18.0 or 1.18.1 with the NamespacedMutatingPolicy (nmpol) feature reachable. The exploit specifically requires embedding generator.apply("<target-namespace>", [...]) inside a policy matchConditions expression; the target namespace is attacker-chosen and unvalidated. Limiting factors: exploitation is gated by tenant RBAC (a user with no rights to create these policy objects cannot exploit it), it only works on the narrow 1.18.0-1.18.1 version band (fixed in 1.18.2), and it depends on the admission controller running with its default cluster-wide privileges. No end-user interaction is needed, and the trigger fires when a matching admission request is processed. |
| Impact | This is a genuine high-priority issue for multi-tenant clusters, not merely a high-CVSS paper cut. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N, base 9.6) is well justified: the attack is over the Kubernetes API (AV:N), low complexity (AC:L), needs only tenant-level create rights on namespacedmutatingpolicies (PR:L), no user interaction, and crosses a trust boundary (S:C) by abusing the controller's cluster privileges to reach other namespaces with high confidentiality and integrity impact. Availability is untouched (A:N), consistent with the fact that the primitive creates/overwrites resources rather than destroying the cluster. A concrete PoC in the advisory raises real-world likelihood; however no EPSS score is provided, there is no CISA KEV listing, and no evidence of active exploitation, so exploitation risk is currently demonstrated-but-not-observed in the wild. The main limiter is prerequisite RBAC - the attacker must already be a legitimate tenant able to create these policy objects - so exposure is confined to clusters running the narrow vulnerable version band (1.18.0-1.18.1) with the nmpol feature reachable by tenants. One data nuance: the CVE description says 'from 1.18.0 until 1.18.2' while the vendor advisory scopes the practical vector to 1.18.0-1.18.1 (NamespacedGeneratingPolicy is not a functional vector in 1.18.1); treat 1.18.2 as the fixed release. |
| Exploit ScenarioDerived | A tenant with create rights on namespacedmutatingpolicies in tenant-ns submits a NamespacedMutatingPolicy whose matchConditions contain generator.apply("kube-system", [ ...RoleBinding/ConfigMap... ]); when any matching admission request is evaluated, the cluster-privileged admission controller creates the attacker-specified resources in kube-system. By generating a RoleBinding that grants their identity elevated permissions, the tenant escalates from a single namespace to cluster-wide control. A working proof-of-concept manifest is published in the GitHub advisory, lowering the bar to reproduce. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 26, 2026
Cross-namespace privilege escalation in Kyverno 1.18.0-1.18.1 lets any tenant who can create a NamespacedMutatingPolicy in their own namespace force the cluster-privileged admission controller to generate resources (ConfigMaps, Secrets, NetworkPolicies, RoleBindings) in arbitrary namespaces, including kube-system. The nmpol CEL compiler unintentionally exposes the generator library to matchConditions, and neither the mpol validator nor GenerateResources enforces namespace scope on the generator.apply() target. A working proof-of-concept is published in the vendor advisory (GHSA-79gf-7frw-68m9); there is no KEV listing or evidence of active exploitation, and the issue is fixed in 1.18.2.
RemediationAI
Upgrade to Kyverno v1.18.2, which threads the policy namespace into the generator CEL library and rejects any generator.apply() whose target namespace differs from the policy's own namespace, and additionally denies cluster-scoped generation from namespaced policies (Vendor-released patch: 1.18.2; see https://github.com/kyverno/kyverno/releases/tag/v1.18.2 and PR https://github.com/kyverno/kyverno/pull/16238, commits 0919553c0ea1904f8d891280c92018da97946a06 and 5164bcdeda5b57678bc2d7a03ecc2cbb02982dae). If you cannot upgrade immediately, remove or tightly restrict tenants' ability to create namespacedmutatingpolicies.policies.kyverno.io objects via RBAC (drop 'create' on that resource from tenant roles), which eliminates the attack vector at the cost of blocking tenants who legitimately author their own namespaced mutating policies; additionally audit for any NamespacedMutatingPolicy whose matchConditions reference generator.apply and inspect recently generated resources in sensitive namespaces such as kube-system for unexpected ConfigMaps, Secrets, or RoleBindings. Consider constraining the admission controller's RBAC to the minimum namespaces it must write to, recognizing this may break legitimate cross-namespace generate policies.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Kyverno is a Kubernetes-native policy engine that runs as an admission controller with broad, cluster-wide RBAC so it can mutate and generate resources across the cluster. The flaw is a missing-authorization defect (CWE-862): the CEL-based NamespacedMutatingPolicy (nmpol) compiler in pkg/cel/policies/mpol registers the 'kyverno.generator' library into matchConditions expressions, so a boolean match expression can invoke generator.apply(namespace, resources). The namespace argument reaches contextProvider.GenerateResources (pkg/cel/libs/context.go:177) completely unvalidated. Comparable code paths are guarded - pkg/engine/context/loaders/configmap.go rejects cross-namespace ConfigMap references and pkg/engine/apicall/apicall.go enforces namespace-segment matching - but the generator path had neither check, so a namespace-scoped policy could drive the controller's cluster identity to write into any namespace. The upstream fix threads the policy namespace into the generator Lib (kyverno/sdk) and adds a namespacedImpl that rejects any apply() whose target differs from the policy namespace, plus a server-side guard in GenerateResources that denies cluster-scoped generation for namespaced policies.
Know when Kyverno gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
Exploited over the K8s API (AV:N/AC:L), needs only tenant create rights on the policy object (PR:L), no interaction, and abuses the controller's cluster identity across namespaces (S:C) with high C/I but no availability loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Kyverno is a policy engine designed for cloud native platform engineering teams. From 1.18.0 until 1.18.2, the NamespacedMutatingPolicy CEL compiler exposes the generator library to matchConditions, allowing a namespace-scoped policy to invoke generator.apply(namespace, resources) with an arbitrary target namespace. The validation in pkg/cel/policies/mpol/validate.go checks that the policy compiles but does not enforce namespace scope, and GenerateResources in pkg/cel/libs/context.go does not reject the cross-namespace target. A user who can create NamespacedMutatingPolicy objects in one namespace can cause the admission controller, operating with cluster-wide privileges, to create ConfigMaps, NetworkPolicies, Secrets, RoleBindings, and other resources in another namespace, enabling unauthorized modification and potential privilege escalation. This issue is fixed in version 1.18.2.
Executive ViewAI
Kyverno policy engine versions 1.18.0 through 1.18.1 contain a critical privilege escalation vulnerability (CVSS 9.6) with publicly available exploit code that allows any cluster tenant to bypass namespace isolation and force creation of resources in protected system namespaces like kube-system. This enables cluster-wide compromise including credential theft and policy manipulation. Organizations running affected versions face immediate risk of unauthorized cluster access.
Apply vendor patch: Kyverno 1.18.2 or later.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass
Kyverno is a policy engine designed for Kubernetes. Rated high severity (CVSS 8.7), this vulnerability is remotely explo
Kyverno is a policy engine designed for cloud native platform engineering teams. Rated high severity (CVSS 8.5), this vu
Kyverno versions up to 1.16.3 is affected by allocation of resources without limits or throttling (CVSS 7.7).
Kyverno is a policy engine designed for cloud native platform engineering teams. Rated medium severity (CVSS 5.8), this
Kyverno versions 1.16.0 and later contain a server-side request forgery vulnerability in unrestricted CEL HTTP functions
Privilege escalation in Kyverno before 1.19.1 allows an authenticated Kubernetes namespace tenant with Policy/apiCall au
Policy enforcement bypass in Kyverno v1.9.0 through v1.12.7 lets an authenticated Kubernetes user evade an enforce-mode
Kyverno is a policy engine designed for Kubernetes. Rated high severity (CVSS 8.8), this vulnerability is remotely explo
Cross-namespace information disclosure in Kyverno before 1.19.1 allows an authenticated low-privilege tenant to read res
Credential leakage in Kyverno's apiCall service mode automatically forwards the Kubernetes admission controller's Servic
Server-side request forgery in Kyverno's Kubernetes admission controller (all versions before 1.18.0) enables any authen
EUVD-2026-66561
GHSA-79gf-7frw-68m9
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB