Safeguard
Vulnerability Analysis•

CVE-2026-41323: High SSRF Token Theft in Kyverno apiCall Policies

CVE-2026-41323 lets a Kyverno policy send the admission controller's service account token to any URL. Upgrade to 1.16.4, 1.17.2-rc1 or 1.18.0-rc1.

Safeguard Security Team
3 min read

CVE-2026-41323 is a high severity SSRF and credential leak (CVSS 8.1) in Kyverno. A ClusterPolicy apiCall can send the admission controller's service account token to any URL. Fixed in 1.16.4, 1.17.2-rc1 and 1.18.0-rc1. Upgrade, then review who can create policies.

What's affected

Per the record, versions before 1.16.4 are affected, and the patched versions are 1.16.4, 1.17.2-rc1 and 1.18.0-rc1. The advisory says it was tested on v1.17.1 with a default Helm install and likely affects all versions with apiCall service support.

How to check if you're exposed

Find your Kyverno version:

kubectl -n kyverno get deploy -o wide
helm list -n kyverno

Read the image tags and compare them with the fixed versions. Then find policies that use apiCall with a service URL:

kubectl get clusterpolicy -o yaml | grep -n "service:"

Treat any URL that points outside the cluster, or that you do not recognise, as a lead worth chasing. Also list who has permission to create or update ClusterPolicy objects, because the attack needs that right.

What to do now

  1. Upgrade Kyverno to 1.16.4, 1.17.2-rc1, 1.18.0-rc1 or later, using the track you run.
  2. Audit existing ClusterPolicy objects for apiCall service URLs and remove ones you cannot explain.
  3. Restrict who can create or edit policies with Kubernetes RBAC.
  4. If you suspect a token left the cluster, rotate the admission controller's credentials and review the webhook configurations for unexpected changes.
  5. Run the free dependency scan on your charts and images so you know which Kyverno version each cluster runs.

Why it matters

The record lists CWE-200, exposure of sensitive information, and CWE-918, server side request forgery. The advisory describes two issues that combine. The service URL from a policy goes into an HTTP request with no scheme or address checks. Then, if the request has no Authorization header, Kyverno adds its own service account token.

In the default Helm install, that account can read and patch the webhook configurations. A stolen token could therefore let an attacker alter admission control for the whole cluster, which is why a policy author gets a path to cluster level impact. The vector requires low privileges, so the control is deciding who may author policies. The record does not flag this CVE as known exploited.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Do I need to be cluster admin to abuse this?

The vector says low privileges are required. The advisory's chain needs the right to create a policy that uses apiCall, so tight RBAC on policy objects helps a lot.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.