CVE-2026-54523: Kyverno NamespacedMutatingPolicy generator.apply() namespace validation bypass

CVE-2026-54523 · Severity: critical · CVSS 9.6 · Published 2026-08-26

Kyverno is a policy engine for Kubernetes that enforces security and compliance rules. A vulnerability in versions 1.18.0–1.18.1 allows a tenant with permission to create namespace-scoped policies to bypass namespace isolation and create resources (ConfigMaps, Secrets, NetworkPolicies, RoleBindings) in any namespace, including protected system namespaces like kube-system. An attacker can exploit this to inject malicious configuration, disrupt cluster networking, or escalate privileges cluster-wide.

Technologies: github.com/kyverno/kyverno (Go), Kyverno. Vendors: Go, Kyverno.

Quick answers

Is CVE-2026-54523 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-54523 being exploited in the wild.
How severe is CVE-2026-54523?
Critical severity, with a CVSS score of 9.6, published 26 August 2026.
Which products and versions are affected?
github.com/kyverno/kyverno (Go) >= 1.18.0, <= 1.18.1, SEMVER:introduced=1.18.0,fixed=1.18.2; Kyverno >=1.18.0, <=1.18.1.
Is there a fix for CVE-2026-54523?
Yes. github.com/kyverno/kyverno (Go): upgrade to 1.18.2 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-54523 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-54523?
Check whether you run github.com/kyverno/kyverno (Go) or Kyverno at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • github.com/kyverno/kyverno (Go): upgrade to 1.18.2 or later
    go get github.com/kyverno/kyverno@v1.18.2

Technical details

The vulnerability is a missing authorization check (CWE-862) in Kyverno's CEL policy compiler. In versions 1.18.0–1.18.1, the `generator` library is unintentionally exposed to NamespacedMutatingPolicy match condition expressions, allowing a tenant to call `generator.apply(namespace, resources)` with an arbitrary namespace argument. The vulnerable function `GenerateResources()` in `pkg/cel/libs/context.go:177` accepts the namespace parameter without validation, unlike correctly-guarded equivalents in ConfigMap loaders and API call handlers. When a namespaced mutating policy is applied (e.g., on ConfigMap creation in a tenant namespace), the admission controller—which runs with cluster-wide RBAC permissions—executes the CEL expression and creates resources in the attacker-specified namespace. No prior authorization check enforces namespace scope, enabling privilege escalation and cross-namespace resource injection. Patches are available in v1.18.2 and later.

Affected products

  • Kyverno Kyverno >=1.18.0, <=1.18.1

Identifiers

  • CVE-2026-54523
  • GHSA-79gf-7frw-68m9
  • GO-2026-6296

Timeline

  • 2026-05-20: other: Vulnerability reproduced on main branch
  • 2026-07-13: disclosed: CVE-2026-54523 / GHSA-79gf-7frw-68m9 published
  • 2026-07-22: other: Advisory clarified to document actual v1.18.1 attack vector (NamespacedMutatingPolicy in matchConditions, not NamespacedGeneratingPolicy)
  • 2026-08-26: patched: v1.18.2 released with fix

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.