High priorityDisclosed

Advisory · CVE-2026-122308

Spoofed generate labels let Kyverno clone Secrets across namespaces

Kyverno before 1.19.2 has an authorization bypass in the Generation Handler: users with create or update permissions can trigger synchronized generate policies by spoofing internal generate.kyverno.io labels and clone sensitive Secrets from restricted namespaces. Kyverno rates it CVSS 3.1 8.5.

Vendor
Kyverno
Product
Kyverno
Identifier / CWE
CVE-2026-122308
CWE-639
Action timing
Immediate
ELI5

Explain it like I’m five

Kyverno trusts labels that say 'I am managed by Kyverno'. Anyone can stick those labels on their own ConfigMap and trick the generator into copying Secrets into their namespace.

SIMPLIFIED_ATTACK_PATH04 STEPS
  1. 01Labels spoofed

    An attacker labels a ConfigMap as managed-by kyverno with crafted policy, rule, and trigger labels.

  2. 02Handler trusts the labels

    The Generation Handler treats the spoofed labels as internal generate.kyverno.io markers.

  3. 03Synchronized generate triggered

    A synchronized generate policy fires on the attacker's say-so.

  4. 04Secrets cloned

    Sensitive Secrets are cloned from restricted namespaces into the attacker's own namespace.

What happened

Kyverno disclosed CVE-2026-122308 for Kyverno before 1.19.2. The Generation Handler has an authorization bypass: users with create or update permissions can trigger synchronized generate policies by spoofing internal generate.kyverno.io labels. An attacker can label a ConfigMap as managed-by kyverno with crafted policy, rule, and trigger labels to clone sensitive Secrets from restricted namespaces into their own namespace.

The advisory rates it CVSS 3.1 8.5 and identifies Kyverno 1.19.2 as the fixed release.

What to do

  1. Inventory Kyverno installations and confirm the deployed version.
  2. Upgrade affected installations to Kyverno 1.19.2 or later using the project release guidance.
  3. While remediation is underway, watch for ConfigMaps carrying generate.kyverno.io labels outside Kyverno-managed flows.
  4. Review Kubernetes audit logs for generate triggers and for Secrets copied into unexpected namespaces.
  5. Check whether Secrets appeared in namespaces that should not hold them and rotate any that did.

Management note

Internal labels are not an access control mechanism, and this flaw proves it. Any Secret that could be generated into another namespace should be treated as exposed until the audit log clears it.