Skip to main content

Kyverno EUVDEUVD-2026-87678

| CVE-2026-100705 HIGH
Server-Side Request Forgery (SSRF) (CWE-918)
2026-09-26 VulnCheck GHSA-8x9j-8h3w-5cxq
8.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain policy-author or resource-submit access
  2. Delivery
    Craft apiCall.service URL to metadata/internal host
  3. Exploit
    Kyverno legacy executor issues unfiltered request
  4. Execution
    Read cloud credentials and reach in-cluster endpoints
  5. Impact
    Escalate using harvested credentials/token

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

Exploitation requires the ability to author a Kyverno ClusterPolicy or GlobalContextEntry that uses a non-CEL context[].apiCall.service call (the legacy apiCall service executor path), which is a cluster-privileged operation (PR:H). The egress blocklist and scoped-token control were only wired into the new CEL http.Get/Post library, so any policy using the legacy service executor or the GlobalContextEntry external-API path is affected on versions before 1.19.1. A limiting factor: in the default case the attacker must already hold policy-authoring privileges. The privilege bar drops to a lower-privileged resource submitter ONLY when a deployed policy templates the service URL from the admission resource - a non-default, deployment-specific configuration. The stolen ServiceAccount token is audience-scoped, limiting its replay value.

Impact

The vendor CVSS 4.0 score of 8.3 (High) reflects a network-exploitable (AV:N), low-complexity (AC:L), no-user-interaction SSRF with high confidentiality impact on both the vulnerable system (VC:H) and subsequent systems (SC:H) via cloud metadata credential theft. Crucially, the vector requires high privileges (PR:H), consistent with the description: the primary attacker is a ClusterPolicy or GlobalContextEntry author, who is inherently a trusted, cluster-privileged actor. This substantially lowers real-world risk versus an unauthenticated flaw. The description does note a lower-privilege escalation path - where a deployed policy templates the service URL from the admission resource, an ordinary resource submitter could trigger it - but this is deployment-dependent, not the default. No EPSS score, no CISA KEV listing, and no public POC were provided, so this is 'no public exploit identified at time of analysis' - a real but not urgently-exploited issue. The token-theft angle is partially mitigated: the exfiltrated projected ServiceAccount token is audience-scoped, limiting replay. Net: a legitimately serious SSRF-to-metadata-credential issue in a widely used Kubernetes tool, but gated behind privileged policy authorship in the default case, making it a patch-promptly rather than drop-everything priority.

Exploit ScenarioDerived

A user with rights to author a Kyverno ClusterPolicy or GlobalContextEntry defines a non-CEL context[].apiCall.service call pointing at the cloud metadata endpoint (e.g. 169.254.169.254 or metadata.google.internal). Kyverno's legacy executor issues the GET/POST with no egress filtering, returning cloud instance credentials to the policy context, and even attaches Kyverno's projected ServiceAccount token to the attacker-chosen host. In deployments where a policy templates the service URL from the admission resource, a lower-privileged resource submitter can trigger the same request path. No public POC is currently identified.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 26, 2026

Server-side request forgery in Kyverno before 1.19.1 lets a user who can author a ClusterPolicy or GlobalContextEntry with a non-CEL context[].apiCall.service call force the admission controller to issue GET/POST requests to an arbitrary destination, including cloud metadata endpoints, loopback, and any in-cluster service, thereby reading cloud instance credentials and reaching internal endpoints from Kyverno's network position. The vulnerable legacy executor and the GlobalContextEntry external-API path use a plain net/http client with no egress blocklist and no validation of the configured service URL, and they unconditionally attach Kyverno's projected ServiceAccount token to the attacker-chosen destination (the token is audience-scoped, limiting replay value). Exploitation requires high privileges because the attacker must already be able to write cluster-scoped policy objects (PR:H); the bar drops to a lower-privileged resource submitter only in the non-default case where a deployed policy templates the service URL from the admission resource. There is no public exploit identified at time of analysis, and the vendor rates the issue 8.3 (High) under CVSS 4.0.

RemediationAI

Upgrade Kyverno to 1.19.1, the vendor-released fixed version, which wires the default egress blocklist and scoped-token control into the legacy apiCall service executor and the GlobalContextEntry external-API path in addition to the CEL http.Get/Post library (advisory: https://github.com/kyverno/kyverno/security/advisories/GHSA-q825-p383-r9v5). If immediate upgrade is not possible, the most effective compensating control is RBAC hardening: restrict create/update rights on ClusterPolicy and GlobalContextEntry to the smallest possible set of trusted administrators, since exploiting the default configuration already requires policy-authoring privileges; this does not help when a deployed policy templates the service URL from the admission resource, so audit existing policies for url fields built from resource data and remove or constrain those templates (side effect: legitimate dynamic-URL policies must be rewritten or disabled). Enforce Kubernetes NetworkPolicy egress rules on the Kyverno namespace to block the link-local metadata IPs, loopback, and unneeded internal services (side effect: must allowlist every legitimate external API Kyverno actually calls or admission webhook traffic breaks). On cloud hosts, prefer IMDSv2-only or metadata access restrictions so a forged request cannot retrieve credentials even if SSRF succeeds, and treat Kyverno's projected ServiceAccount token as potentially exposed, relying on its audience scoping while rotating or narrowing it where feasible. Note that the vendor has not published a patch version other than 1.19.1, and no public exploit code was identified at time of analysis, so these controls are precautionary rather than a response to observed attacks.

Affected VersionsENISA

kyverno 0 <1.19.1

Affected Packages

euvd kyverno fix: 1.19.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in 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 whose validation, mutation, and generation rules can call external services through context entries. The affected code is the legacy apiCall service executor in pkg/engine/apicall/executor.go and the GlobalContextEntry external-API path, which together handle every non-CEL context[].apiCall.service invocation. Those paths construct requests with a plain net/http client and perform neither of the protections that were added for the newer CEL http.Get/Post library: the default egress blocklist (169.254.169.254, 169.254.169.253, metadata.google.internal, 127.0.0.0/8, ::1/128) and the scoped-token control. Because the configured service URL is also not validated, any host the attacker supplies is reachable, which is the classic CWE-918 server-side request forgery pattern: the server becomes a confused deputy that converts a data-only policy object into a network request originating from the Kyverno pod. The unconditional attachment of Kyverno's projected ServiceAccount token to that attacker-chosen destination compounds confidentiality impact, though the audience scoping of the projected token constrains what the stolen credential can be replayed against. The affected CPE is cpe:2.3:a:kyverno:kyverno:*:*:*:*:*:*:*:* and the EUVD record lists affected versions as kyverno 0 through <1.19.1.

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

Vendor (VulnCheck) PRIMARY 8.3 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N
vuln.today AI 7.6 HIGH

Network-reachable admission/policy API with low complexity; PR:H because default exploitation needs policy-author rights; S:C and C:H for metadata credential theft crossing into cloud/internal systems, I:L for arbitrary GET/POST.

3.1 AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:H/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N
Red Hat 7.6 HIGH

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
High
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
High
Subsequent system: Integrity
Low
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 26, 2026 - 14:02 EUVD
CVE Published
Sep 26, 2026 - 13:23 cve.org
HIGH 8.3

DescriptionCVE.org

Kyverno before 1.19.1 is vulnerable to server-side request forgery. The default egress blocklist (169.254.169.254, 169.254.169.253, metadata.google.internal, 127.0.0.0/8, ::1/128) and the scoped-token control were wired only into the new CEL http.Get/Post library and were never applied to the legacy apiCall service executor (pkg/engine/apicall/executor.go) or to the GlobalContextEntry external-API path, which handle every non-CEL context[].apiCall.service call. Because these paths use a plain net/http client with no egress filtering and no validation of the configured service URL, a ClusterPolicy or GlobalContextEntry author - or, where a deployed policy templates the service URL from the admission resource, a lower-privileged resource submitter - can cause Kyverno to issue GET/POST requests to an arbitrary host, including the cloud metadata endpoint, loopback, and any in-cluster service, reading cloud instance credentials and reaching internal endpoints with Kyverno's network position. The executor also unconditionally attaches Kyverno's projected ServiceAccount token to the attacker-chosen destination; the token is audience-scoped, limiting its replay value. Fixed in 1.19.1.

Technical POC Analysis

CWE-918 (SSRF); the advisory also tags CWE-200 and CWE-522.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Kyverno versions before 1.19.1 contain a server-side request forgery flaw in the admission controller that can be triggered by users with permission to create cluster-scoped policy objects. This could allow an attacker to force Kyverno to access cloud metadata endpoints and internal services, potentially exposing cloud instance credentials and enabling lateral movement. Security leadership should prioritize patching because Kyverno often runs with elevated privileges in Kubernetes environments.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Medium
CNCF Kubernetes policy engine, common in K8s clusters but not universal
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

CVE-2026-22039 CRITICAL POC
9.9 Jan 27

Kyverno Kubernetes policy engine prior to 1.x has a privilege escalation vulnerability (CVSS 9.9) allowing policy bypass

CVE-2026-54523 CRITICAL POC
9.6 Aug 26

Cross-namespace privilege escalation in Kyverno 1.18.0-1.18.1 lets any tenant who can create a NamespacedMutatingPolicy

CVE-2024-48921 HIGH POC
8.7 Oct 29

Kyverno is a policy engine designed for Kubernetes. Rated high severity (CVSS 8.7), this vulnerability is remotely explo

CVE-2025-46342 HIGH POC
8.5 Apr 30

Kyverno is a policy engine designed for cloud native platform engineering teams. Rated high severity (CVSS 8.5), this vu

CVE-2026-23881 HIGH POC
7.7 Jan 27

Kyverno versions up to 1.16.3 is affected by allocation of resources without limits or throttling (CVSS 7.7).

CVE-2025-29778 MEDIUM POC
5.8 Mar 24

Kyverno is a policy engine designed for cloud native platform engineering teams. Rated medium severity (CVSS 5.8), this

CVE-2026-4789 CRITICAL
9.8 Mar 30

Kyverno versions 1.16.0 and later contain a server-side request forgery vulnerability in unrestricted CEL HTTP functions

CVE-2026-100706 CRITICAL
9.4 Sep 26

Privilege escalation in Kyverno before 1.19.1 allows an authenticated Kubernetes namespace tenant with Policy/apiCall au

CVE-2026-84200 CRITICAL
9.4 Sep 01

Policy enforcement bypass in Kyverno v1.9.0 through v1.12.7 lets an authenticated Kubernetes user evade an enforce-mode

CVE-2023-33191 HIGH
8.8 May 30

Kyverno is a policy engine designed for Kubernetes. Rated high severity (CVSS 8.8), this vulnerability is remotely explo

CVE-2026-100707 HIGH
8.3 Sep 26

Cross-namespace information disclosure in Kyverno before 1.19.1 allows an authenticated low-privilege tenant to read res

CVE-2026-84195 HIGH
8.3 Sep 01

Credential leakage in Kyverno's apiCall service mode automatically forwards the Kubernetes admission controller's Servic

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy