Act nowDisclosed

Advisory · CVE-2026-122311

Kyverno CEL resource calls can walk out of a namespace with path traversal

Kyverno 1.16.0 before 1.19.2 does not validate path segments in the resource argument of resource.get() and resource.post(), so namespaced CEL policies can insert .. segments and read or write arbitrary cluster objects with the admission controller's ServiceAccount. Kyverno rates it CVSS 3.1 9.9.

Vendor
Kyverno
Product
Kyverno
Identifier / CWE
CVE-2026-122311
CWE-22
Action timing
Immediate
ELI5

Explain it like I’m five

A policy language that is supposed to stay inside one namespace lets an attacker type '..' and walk out the door, then read or change anything in the cluster.

SIMPLIFIED_ATTACK_PATH04 STEPS
  1. 01Namespaced CEL policy created

    A tenant who can create a NamespacedValidatingPolicy writes CEL using resource.get() or resource.post().

  2. 02Traversal segments inserted

    The resource argument carries .. segments that are never validated.

  3. 03Namespace escape

    The admission controller's ServiceAccount follows the path to arbitrary cluster objects.

  4. 04Cluster takeover

    The attacker can read and write cluster objects, including Secrets and policies.

What happened

Kyverno disclosed CVE-2026-122311 for Kyverno 1.16.0 before 1.19.2. The resource argument of resource.get() and resource.post() is not validated for path segments, so namespaced CEL policies can insert .. segments to escape their namespace. Tenants who can create a NamespacedValidatingPolicy can read and write arbitrary cluster objects using the admission controller’s ServiceAccount, leading to cluster takeover.

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 NamespacedValidatingPolicy objects.
  4. Review Kubernetes audit logs for resource.get() and resource.post() calls with .. segments and for cluster-scoped access from the admission controller’s ServiceAccount.
  5. Audit cluster objects, especially Secrets and policies, for unexpected reads or changes.

Management note

Path traversal inside the policy engine turns a namespaced tenant into a cluster administrator. In a shared cluster this is a full trust boundary failure, so upgrade first and investigate second.