Skip to main content
HIGH7.6GHSA-q825-p383-r9v5
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N
Affected projects
kyverno
Disclosed
Last updated

Affected versions

ProjectVulnerable range
github.com/kyverno/kyverno< 1.19.1

Patched versions

ProjectFixed in
github.com/kyverno/kyverno1.19.1

References

Summary​

Kyverno's April 2026 SSRF blocklist — which denies outbound requests to 169.254.169.254, 169.254.169.253, metadata.google.internal, 127.0.0.0/8, and ::1/128 — was wired exclusively into the new CEL http.Get/Post library. The legacy apiCall service executor used by every classic ClusterPolicy/Policy context[].apiCall.service call and every GlobalContextEntry external-API call received no equivalent filtering. A ClusterPolicy or GlobalContextEntry author can therefore drive Kyverno to issue requests to the cloud metadata endpoint or any in-cluster service, and Kyverno's projected ServiceAccount token is attached to those requests unconditionally.

Impact​

Any principal with permission to create or update ClusterPolicy, Policy, or GlobalContextEntry resources can exploit this vulnerability to reach the cloud instance metadata service at 169.254.169.254, read cloud credentials, and access in-cluster services using Kyverno's network position. Additionally, Kyverno's projected ServiceAccount token is sent to the attacker-chosen host on every such request, constituting a credential egress even where direct exploitation of cloud metadata is not possible. Because URL templating allows a policy to derive the service URL from the admission resource under review, a lower-privileged resource submitter may also trigger the exfiltration depending on how the policy is constructed.

Detection​

Audit all ClusterPolicy, Policy, and GlobalContextEntry resources in the cluster for context[].apiCall.service entries with url fields pointing to private or metadata IP ranges (169.254.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Review Kyverno controller logs for unexpected outbound HTTP requests to these ranges. Any GlobalContextEntry resource whose apiCall.service.url is not the in-cluster Kubernetes API server should be treated as suspicious on unpatched versions.

Mitigation​

Upgrade to Kyverno 1.19.1, which applies the SSRF host/CIDR blocklist and ServiceAccount token destination check to the legacy apiCall service executor and the GlobalContextEntry external-API path, matching the controls already in place for the CEL http.Get/Post path. Prior to upgrading, restrict ClusterPolicy, Policy, and GlobalContextEntry create/update permissions to trusted administrators using RBAC, and review existing resources for suspicious service.url values.

References​