Act nowDisclosed

Advisory · CVE-2026-122304

Kyverno CleanupPolicy context loader can leak cross-namespace Secrets

Kyverno 1.17.0 before 1.19.2 builds its cleanup controller context loader with a nil policy, so a namespaced CleanupPolicy with apiCall or globalReference context entries can read Secrets in other namespaces and modify validatingwebhookconfigurations. Kyverno rates it CVSS 3.1 9.9.

Vendor
Kyverno
Product
Kyverno
Identifier / CWE
CVE-2026-122304
CWE-863
Action timing
Immediate
ELI5

Explain it like I’m five

The cleanup helper is supposed to check which namespace a request belongs to, but it starts with a blank form, so it never checks at all. A tenant can ask it to fetch Secrets from anywhere.

SIMPLIFIED_ATTACK_PATH04 STEPS
  1. 01CleanupPolicy created

    A namespace admin creates a namespaced CleanupPolicy with apiCall or globalReference context entries.

  2. 02Context loader built with nil policy

    The cleanup controller builds its context loader without the policy that would scope it to the namespace.

  3. 03Cross-namespace read

    The loader reads Secrets in other namespaces using the cleanup controller's ServiceAccount.

  4. 04Webhook configuration modified

    The same path can modify validatingwebhookconfigurations, weakening admission control.

What happened

Kyverno disclosed CVE-2026-122304 for Kyverno 1.17.0 before 1.19.2. The cleanup controller builds its context loader with a nil policy, so a namespaced CleanupPolicy carrying apiCall or globalReference context entries can read cross-namespace Secrets and modify validatingwebhookconfigurations using the cleanup controller’s ServiceAccount.

The advisory rates it critical at CVSS 3.1 9.9 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, limit who can create CleanupPolicy objects.
  4. Review Kubernetes audit logs for CleanupPolicy objects with apiCall or globalReference context entries and for reads of Secrets outside the author’s namespace.
  5. Inspect validatingwebhookconfigurations for unexpected changes and restore them.

Management note

A missing check in a background controller is worse than a missing check in a user-facing endpoint: it runs with the controller’s own broad permissions. Assume any Secret readable cluster-wide was reachable until the patch lands.