CVE-2026-84196

Description

A flaw was found in Kyverno. This server-side request forgery (SSRF) vulnerability in apiCall.service.url allows authenticated users to send arbitrary HTTP requests. By injecting user-controlled input through variable substitution, attackers can target internal services, cloud metadata endpoints, and loopback addresses. The response data is reflected in admission error messages, enabling non-blind data exfiltration, which means sensitive information can be disclosed.

Statement

This vulnerability is rated Important because authenticated users can exploit a Server-Side Request Forgery (SSRF) in Kyverno's apiCall.service.url via variable substitution. This allows attackers to make arbitrary HTTP requests to internal services, cloud metadata endpoints, and loopback addresses, leading to information disclosure through admission error messages.

Mitigation

Ensure that no policy interpolates request-controlled data into apiCall.service.url. Audit all Policy, ClusterPolicy, and GlobalContextEntry resources for {{ }} expressions in that field and replace them with static URLs. Where a dynamic value is genuinely required, move it into the request body or a header rather than the URL, or constrain it to a fixed allowlist of permitted values before substitution. Enforce this going forward with a ValidatingAdmissionPolicy that rejects policies containing variable substitution in apiCall.service.url.

Understanding the Weakness (CWE)

Confidentiality

Technical Impact: Read Application Data

Integrity

Technical Impact: Execute Unauthorized Code or Commands

Access Control

Technical Impact: Bypass Protection Mechanism

By providing URLs to unexpected hosts or ports, attackers can make it appear that the server is sending the request, possibly bypassing access controls such as firewalls that prevent the attackers from accessing the URLs directly. The server can be used as a proxy to conduct port scanning of hosts in internal networks, use other URLs such as that can access documents on the system (using file://), or use other protocols such as gopher:// or tftp://, which may provide greater control over the contents of requests.

Frequently Asked Questions

Want to get errata notifications? Sign up here.