Description
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.
Published: 2026-09-26
Score: 8.3 High
EPSS: < 1% Very Low
KEV: No
Impact: Server‑Side Request Forgery
Action: Immediate Patch
AI Analysis

Impact

Kyverno, prior to version 1.19.1, processes external service calls through a legacy executor that omits the egress blocklist and scoped‑token control implemented for newer CEL‑based calls. This flaw allows a policy author or a lower‑privileged resource submitter to trigger Kyverno to perform HTTP GET or POST requests to any audience‑specified URL, including cloud metadata endpoints, loopback interfaces, or arbitrary in‑cluster services. The request is sent with Kyverno’s projected ServiceAccount token, which grants the service access to cluster resources. Because Kyverno’s network position is per‑pod, the attacker can read cloud instance credentials or reach internal endpoints that might otherwise be unreachable.

Affected Systems

All Kyverno installations with versions earlier than 1.19.1 are affected. The vulnerability surfaces when a ClusterPolicy or GlobalContextEntry contains an external‑API call that is not written in CEL, or when a policy templates the service URL from an admission resource.

Risk and Exploitability

The CVSS score of 8.3 indicates a high‑severity flaw. The EPSS score is not available, but the lack of egress filtering and the automatic attachment of a ServiceAccount token greatly increase the attack surface. The vulnerability is not included in the CISA KEV catalog at this time. Exploitation requires an attacker to write or modify a policy (or to submit a resource that is processed by a policy), then specify a malicious destination URL. Once the request is issued, the attacker can retrieve data from the target endpoint or use the token for further internal access.

Generated by OpenCVE AI on September 26, 2026 at 16:27 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Kyverno to version 1.19.1 or later to apply the fixed egress blocklist and scoped‑token logic to all service calls.
  • Audit existing ClusterPolicies and GlobalContextEntries for legacy apiCall.service usage and remove or replace them with CEL‑based calls where possible.
  • Restrict policy authoring privileges so that only trusted users can create or modify policies that contain external API calls.

Generated by OpenCVE AI on September 26, 2026 at 16:27 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sun, 27 Sep 2026 00:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Sat, 26 Sep 2026 13:30:00 +0000

Type Values Removed Values Added
Description 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.
Title Kyverno before 1.19.1 SSRF via legacy apiCall service executor
First Time appeared Kyverno
Kyverno kyverno
Weaknesses CWE-918
CPEs cpe:2.3:a:kyverno:kyverno:*:*:*:*:*:*:*:*
Vendors & Products Kyverno
Kyverno kyverno
References
Metrics cvssV3_1

{'score': 7.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:L/A:N'}

cvssV4_0

{'score': 8.3, 'vector': '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'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-09-26T23:10:45.970Z

Reserved: 2026-09-26T02:39:50.973Z

Link: CVE-2026-100705

cve-icon Vulnrichment

Updated: 2026-09-26T23:10:43.109Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-26T14:16:55.703

Modified: 2026-09-28T15:20:06.633

Link: CVE-2026-100705

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-26T16:45:14Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)