Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconObtain namespace-level Policy create permission
-
DeliveryCraft Policy with ServiceCall URL targeting IMDS or internal endpoint
-
ExploitSubmit Policy to Kubernetes API server
-
InstallKyverno evaluates Policy using privileged cluster ServiceAccount
-
C2HTTP request issued to internal target
-
ExecuteResponse embedded in PolicyReport
-
ImpactAttacker reads PolicyReport to extract credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Credential Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the attacker to hold the Kubernetes RBAC verb create (or update) on the policies.kyverno.io resource within at least one namespace - this is the sole prerequisite and represents a low but non-zero privilege bar. Exploitation is most impactful in multi-tenant Kubernetes environments where platform operators grant namespace-level Policy creation rights to end-users or tenants. Cloud credential theft via 169.254.169.254 additionally requires that the cluster nodes expose IMDSv1 (hop-count unrestricted) or that IMDSv2 is not enforced with a hop limit of 1 - a common configuration on older cluster deployments. Cross-tenant secret exfiltration does not require cloud IMDS access and works against any internal Kubernetes API or in-cluster service reachable from the node network. Exploitation is not possible without at least namespace-scoped Policy creation rights; cluster-admin-only environments are not meaningfully exposed beyond existing trust boundaries. |
| Impact | The provided CVSS 4.0 vector (score 6.9) contains a meaningful discrepancy: PR:N (no privileges required) directly contradicts the description, which explicitly requires namespace-level Policy creation permissions. This under-reports the real access bar but simultaneously obscures a more serious subsequent-system impact: SC:L in the input vector understates the confidentiality exposure - an attacker reading cloud IAM credentials or cross-tenant secrets represents a subsequent-system high-confidentiality impact (SC:H), not low. Real-world risk is therefore higher than the published score implies, particularly in multi-tenant SaaS clusters or platforms that expose namespace-level Policy creation to end-users. There is no CISA KEV listing and no public exploit code, so exploitation is not confirmed as active. EPSS data is not provided; given the low exploitation bar (single Policy YAML) and high impact in multi-tenant environments, actual priority should be elevated above the numeric score for shared clusters. Single-tenant clusters where only cluster-admins create Policies are materially less exposed. |
| Exploit ScenarioDerived | An attacker with namespace-scoped Policy creation rights submits a Kyverno Policy whose ServiceCall URL field is set to http://169.254.169.254/latest/meta-data/iam/security-credentials/. Kyverno evaluates the Policy using its cluster-wide ServiceAccount, issues the HTTP request, and the IAM credential JSON is embedded in the resulting PolicyReport object. The attacker queries the PolicyReport within their namespace, retrieves the cloud IAM role credentials, and uses them to escalate privileges or exfiltrate data from cloud storage outside the cluster. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Server-side request forgery in Kyverno's APICall feature (all versions before 1.16.2) enables any user holding namespace-level Policy creation rights to weaponize Kyverno's cluster-wide, high-privilege ServiceAccount as a confused deputy - directing it to issue HTTP requests to arbitrary internal endpoints including cloud IMDS at 169.254.169.254. Responses, potentially containing other tenants' database passwords, API keys, and cloud IAM role credentials, are surfaced in the PolicyReport and are readable by the attacking tenant, completely collapsing multi-tenant isolation. No public exploit has been identified at time of analysis, though the attack path is straightforward and the impact in shared Kubernetes clusters is severe.
RemediationAI
Upgrade to Kyverno 1.16.2, which introduces URL validation in the APICall ServiceCall feature; this is the definitive fix confirmed by both the GHSA advisory (GHSA-fmqp-4wfc-w3v7) and the upstream Go module fix at version 1.16.2. For clusters that cannot upgrade immediately, a targeted compensating control is to remove or tightly restrict the Policy creation RBAC verb from non-administrative namespaces - specifically, audit any ClusterRole or Role granting create/update on policies.kyverno.io resources to non-operator users, and revoke or gate those permissions. A secondary control for cloud-hosted clusters is to enforce IMDSv2 hop-limit=1 at the instance or node level, which blocks link-local IMDS access from workloads and reduces the cloud credential theft vector; note this does not prevent SSRF to other internal cluster services or cross-tenant endpoints. Network policies restricting egress from the Kyverno namespace to known-good destinations provide defense-in-depth but require precise policy authoring and do not eliminate the confused-deputy cross-tenant risk.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Kyverno is a Kubernetes-native policy engine that validates, mutates, and generates cluster resources via CRD-defined Policies. Its APICall feature allows Policies to enrich decisions with external HTTP data via a ServiceCall configuration block. The vulnerable code resides in api/kyverno/v1/common_types.go (the ServiceCall struct, URL field) and pkg/engine/apicall/executor.go (executeServiceCall), where client.Do(req) is invoked on the user-supplied URL with no allowlist, blocklist, or network-scope validation. Because the HTTP client inherits Kyverno's cluster-wide ServiceAccount - which by design holds broad RBAC permissions across all namespaces - this is a textbook CWE-918 (Server-Side Request Forgery) compounded by a Confused Deputy pattern: the attacker's low-privilege context tricks Kyverno's high-privilege identity into performing the sensitive request. CPE cpe:2.3:a:kyverno:kyverno:*:*:*:*:*:*:*:* covers all releases prior to 1.16.2.
Know when Kyverno gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L
PR:L reflects required namespace Policy creation rights; S:C and C:H capture cross-tenant credential exfiltration via Kyverno's privileged ServiceAccount.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
1DescriptionCVE.org
Kyverno before 1.16.2 contains a server-side request forgery (SSRF) vulnerability in the APICall feature. The URL field in a Policy's ServiceCall configuration is not validated, so a user with namespace-level Policy creation permissions can direct Kyverno to make HTTP requests to arbitrary internal resources (e.g., cloud metadata endpoints such as 169.254.169.254 or other tenants' resources). Because Kyverno executes these requests using its cluster-wide high-privilege ServiceAccount (a Confused Deputy problem), the responses-potentially including other tenants' secrets and cloud IAM credentials-are returned in the PolicyReport and can be read by the attacker, breaking multi-tenant isolation.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.
Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass
Cross-namespace privilege escalation in Kyverno 1.18.0-1.18.1 lets any tenant who can create a NamespacedMutatingPolicy
Kyverno is a policy engine designed for Kubernetes. Rated high severity (CVSS 8.7), this vulnerability is remotely explo
Kyverno is a policy engine designed for cloud native platform engineering teams. Rated high severity (CVSS 8.5), this vu
Kyverno versions up to 1.16.3 is affected by allocation of resources without limits or throttling (CVSS 7.7).
Kyverno is a policy engine designed for cloud native platform engineering teams. Rated medium severity (CVSS 5.8), this
Kyverno versions 1.16.0 and later contain a server-side request forgery vulnerability in unrestricted CEL HTTP functions
Privilege escalation in Kyverno before 1.19.1 allows an authenticated Kubernetes namespace tenant with Policy/apiCall au
Policy enforcement bypass in Kyverno v1.9.0 through v1.12.7 lets an authenticated Kubernetes user evade an enforce-mode
Kyverno is a policy engine designed for Kubernetes. Rated high severity (CVSS 8.8), this vulnerability is remotely explo
Cross-namespace information disclosure in Kyverno before 1.19.1 allows an authenticated low-privilege tenant to read res
Credential leakage in Kyverno's apiCall service mode automatically forwards the Kubernetes admission controller's Servic
EUVD-2026-69034
GHSA-q5v3-pp68-6crj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB