<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cel — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/cel/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 14 Apr 2026 22:37:20 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/cel/feed.xml" rel="self" type="application/rss+xml"/><item><title>Kyverno SSRF Vulnerability in CEL HTTP Library</title><link>https://feed.craftedsignal.io/briefs/2024-01-08-kyverno-ssrf/</link><pubDate>Tue, 14 Apr 2026 22:37:20 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-08-kyverno-ssrf/</guid><description>A Server-Side Request Forgery (SSRF) vulnerability in Kyverno's CEL HTTP library allows users with namespace-scoped policy creation permissions to make arbitrary HTTP requests, enabling unauthorized access to internal services, cloud metadata endpoints, and data exfiltration.</description><content:encoded><![CDATA[<p>A Server-Side Request Forgery (SSRF) vulnerability has been identified in Kyverno&rsquo;s CEL HTTP library (<code>pkg/cel/libs/http/</code>), affecting versions &gt;= 1.16.0. This flaw allows users with permissions to create namespace-scoped policies to bypass intended restrictions and make arbitrary HTTP requests from the Kyverno admission controller. This can lead to unauthorized access to internal Kubernetes services in other namespaces, cloud metadata endpoints such as 169.254.169.254 (allowing credential theft), and the exfiltration of sensitive data by embedding it in policy error messages. The vulnerability stems from a lack of URL validation in the <code>http.Get()</code> and <code>http.Post()</code> functions used within CEL policies, contrasting with the namespace enforcement present in the <code>resource.Lib</code>. The reported vulnerability was tested and confirmed on Kyverno v1.16.2 deployed via Helm chart 3.6.2.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An attacker gains the ability to create NamespacedValidatingPolicy resources within a specific Kubernetes namespace. This could be achieved through compromised credentials, misconfigured RBAC, or other privilege escalation methods.</li>
<li>The attacker crafts a malicious NamespacedValidatingPolicy that utilizes the <code>http.Get()</code> or <code>http.Post()</code> function within a CEL expression. The crafted policy is applied to the target Kubernetes cluster.</li>
<li>The CEL expression within the policy is designed to make an HTTP request to an internal service (e.g., <code>internal-api.kube-system.svc.cluster.local</code>) or a cloud metadata endpoint (<code>169.254.169.254</code>).</li>
<li>The crafted NamespacedValidatingPolicy is triggered by a specific event, such as the creation of a ConfigMap within the attacker&rsquo;s namespace, which matches the <code>matchConstraints</code> defined in the policy.</li>
<li>The Kyverno admission controller executes the CEL expression, making the HTTP request to the specified internal service or cloud metadata endpoint.</li>
<li>The HTTP response from the internal service or cloud metadata endpoint is captured by the CEL expression.</li>
<li>The attacker crafts a <code>messageExpression</code> within the NamespacedValidatingPolicy to include the captured data in a validation error message.</li>
<li>The validation error message, containing the exfiltrated data, is returned to the user, effectively leaking sensitive information.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This SSRF vulnerability allows attackers with limited, namespace-scoped privileges to access sensitive data within a Kubernetes cluster. This includes the ability to access services in other namespaces, potentially compromising sensitive configurations or secrets. Access to cloud metadata endpoints (169.254.169.254) allows the theft of IAM credentials, leading to further escalation of privileges within the cloud environment. Successful exploitation breaks namespace isolation, undermining the security model of Kyverno and Kubernetes.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Deploy the Sigma rule to detect suspicious usage of <code>http.Get</code> or <code>http.Post</code> function in <code>NamespacedValidatingPolicy</code> resources in your SIEM and tune for your environment.</li>
<li>Monitor network connections originating from the Kyverno pods, specifically looking for connections to internal Kubernetes services or cloud metadata endpoints (169.254.169.254), using the <code>network_connection</code> log source.</li>
<li>Apply the suggested fix by adding namespace and URL restrictions to <code>pkg/cel/libs/http/http.go</code> in Kyverno, similar to how <code>resource.Lib</code> enforces namespace boundaries as per the advisory.</li>
<li>Upgrade Kyverno to a patched version &gt;= 1.17 when available, addressing the CVE-2026-4789.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>SSRF</category><category>kyverno</category><category>kubernetes</category><category>cel</category><category>cloud-security</category></item></channel></rss>