Executive brief
Kyverno, a policy engine for Kubernetes, contains a security flaw that allows users with limited permissions to bypass security boundaries. By creating specific policies, an attacker can force the system to make unauthorized network requests to internal services or cloud provider metadata. This could lead to the theft of sensitive data, such as internal service credentials or cloud infrastructure access tokens, potentially compromising the entire cluster.
Technical details
A Server-Side Request Forgery (SSRF) vulnerability exists in Kyverno's Common Expression Language (CEL) HTTP library within the `pkg/cel/libs/http/` component. The `http.Get()` and `http.Post()` functions fail to enforce URL restrictions or namespace boundaries, unlike other Kyverno libraries. An attacker with permissions to create namespaced policies (e.g., `NamespacedValidatingPolicy`) can craft a policy that executes HTTP requests to internal cluster services or cloud metadata endpoints (169.254.169.254). The results of these requests can be exfiltrated through policy validation error messages or audit logs. This issue is specific to the CEL-based policy implementation and was addressed in version 1.17.0.
Affected products
- Kyverno Kyverno >= 1.16.0, < 1.17.0
Timeline
- 2026-04-13: disclosed: Initial disclosure to maintainers
- 2026-04-14: advisory: GitHub Advisory published
- 2026-04-14: patched: Fix included in version 1.17.0