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
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.
- 01CleanupPolicy created
A namespace admin creates a namespaced CleanupPolicy with apiCall or globalReference context entries.
- 02Context loader built with nil policy
The cleanup controller builds its context loader without the policy that would scope it to the namespace.
- 03Cross-namespace read
The loader reads Secrets in other namespaces using the cleanup controller's ServiceAccount.
- 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
- Inventory Kyverno installations and confirm the deployed version.
- Upgrade affected installations to Kyverno 1.19.2 or later using the project release guidance.
- While remediation is underway, limit who can create CleanupPolicy objects.
- Review Kubernetes audit logs for CleanupPolicy objects with apiCall or globalReference context entries and for reads of Secrets outside the author’s namespace.
- 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.