Act nowDisclosed

Advisory · CVE-2026-122310

Kyverno apiCall urlPath check can be slipped past with a fragment or query

Kyverno 1.19.1 before 1.19.2 validates a Policy context.apiCall urlPath after cleaning it but executes the raw path, so a namespace user can hide traversal segments behind # or ? and reach cluster-scoped endpoints with Kyverno's ServiceAccount. Kyverno rates it CVSS 3.1 9.9.

Vendor
Kyverno
Product
Kyverno
Identifier / CWE
CVE-2026-122310
CWE-436
Action timing
Immediate
ELI5

Explain it like I’m five

Kyverno proofreads a cleaned-up copy of an address but then visits the original messy one. An attacker hides the dangerous part behind a # or ?, and the check never sees it.

SIMPLIFIED_ATTACK_PATH04 STEPS
  1. 01Policy with apiCall context

    A namespace-scoped user creates a Policy whose context.apiCall carries a crafted urlPath.

  2. 02Validation sees the cleaned path

    The urlPath is validated after cleaning, so the fragment or query hides the traversal segments.

  3. 03Raw path is executed

    The Kubernetes client discards the fragment or query and requests the raw path, reaching a cluster-scoped endpoint.

  4. 04Cluster admin reached

    The request runs with Kyverno's ServiceAccount, giving the attacker cluster admin.

What happened

Kyverno disclosed CVE-2026-122310 for Kyverno 1.19.1 before 1.19.2. A Policy’s context.apiCall urlPath is validated after cleaning but the raw path is executed, and the Kubernetes client discards any fragment or query. A namespace-scoped user who can create a Policy can hide ../ segments behind # or ? to reach cluster-scoped endpoints with Kyverno’s ServiceAccount, gaining cluster admin.

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 Policies with context.apiCall entries.
  4. Review Kubernetes audit logs for apiCall urlPath values containing # or ? and for cluster-scoped API calls from Kyverno’s ServiceAccount.
  5. Look for unexpected cluster-scoped changes made through the Kyverno ServiceAccount and revert them.

Management note

Validating one string and executing another is a classic check-versus-use gap, and here the gap leads straight to cluster admin. This one deserves the top of the patch queue.