Skip to main content
HIGHGHSA-fmqp-4wfc-w3v7
Affected projects
kyverno
Disclosed
Last updated

Affected versions

ProjectVulnerable range
unknown<1.16.2

Patched versions

ProjectFixed in
unknownno patch available

References

Summary

Kyverno's APICall feature allows policies to fetch external data via HTTP requests, but the implementation does not validate the target URL before executing the request. This creates a Server-Side Request Forgery (SSRF) vulnerability that any user with Policy creation permissions can exploit. Because Kyverno executes all APICall requests using a cluster-wide high-privilege ServiceAccount, a low-privilege tenant can direct Kyverno to access resources across tenant boundaries — a classic Confused Deputy problem. Sensitive data retrieved by Kyverno, such as Secrets from other namespaces or cloud IAM credentials from a metadata service, can be surfaced to the attacker via PolicyReport resources.

Impact

Users with only namespace-level Policy creation permissions can exploit this vulnerability to access internal Kubernetes resources across tenant boundaries, retrieve cloud platform IAM credentials from link-local metadata endpoints (such as the AWS IMDS at 169.254.169.254), and read Secrets belonging to other namespaces. This completely breaks tenant isolation in multi-tenant Kubernetes environments. The vulnerability does not require cluster-admin privileges. Exfiltrated data is returned to the attacker through PolicyReport resources that Kyverno writes as part of normal policy evaluation.

Detection

Review all Policy and ClusterPolicy resources in the cluster for apiCall.service.url fields referencing IP addresses, link-local ranges (169.254.x.x), loopback addresses, or unexpectedly internal services. Audit PolicyReport and ClusterPolicyReport resources for response content that does not originate from trusted external services. In multi-tenant environments, pay particular attention to PolicyReports created by low-privilege namespaces that contain data from other namespaces or cloud metadata endpoints.

Mitigation

No patch was available for versions prior to 1.16.2 at the time of advisory disclosure. Mitigate the risk by restricting Policy creation permissions (kyverno.io/v1 Policy and ClusterPolicy resources) so that only trusted administrators can create policies with apiCall.service.url references. Implement network egress controls on the Kyverno controller pods to restrict outbound connections to an approved allowlist of endpoints, preventing requests to internal metadata services and cross-tenant Kubernetes services. In multi-tenant clusters, treat any tenant's ability to create Kyverno policies with apiCall.service.url as cluster-wide access until a fixed version is deployed.

References