{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/products/kyverno-v1.18.0-v1.18.1/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[{"cvss":9.6,"id":"CVE-2026-54523"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["Kyverno (v1.18.0, v1.18.1)"],"_cs_severities":["critical"],"_cs_tags":[],"_cs_type":"advisory","_cs_vendors":["Kyverno"],"content_html":"\u003cp\u003eKyverno versions v1.18.0 and v1.18.1 contain a critical security vulnerability (CVE-2026-54523) where the \u003ccode\u003egenerator.apply()\u003c/code\u003e function, accessible via CEL (Common Expression Language) expressions in \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e, fails to validate the target namespace argument. This allows an attacker with sufficient permissions to create a \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e within their own namespace to force the Kyverno admission controller to generate resources - such as ConfigMaps, Secrets, or RoleBindings - in any other namespace, including highly sensitive ones like \u003ccode\u003ekube-system\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eBecause the admission controller executes these operations with cluster-wide privileges, an attacker can effectively bypass Kubernetes namespace isolation. The root cause is the lack of namespace scope enforcement in \u003ccode\u003epkg/cel/policies/mpol/validate.go\u003c/code\u003e, leaving the \u003ccode\u003egenerator.apply()\u003c/code\u003e function susceptible to cross-namespace resource injection during admission processing.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker obtains \u003ccode\u003ecreate\u003c/code\u003e permissions on \u003ccode\u003enamespacedmutatingpolicies.policies.kyverno.io\u003c/code\u003e within a non-privileged namespace (e.g., \u003ccode\u003etenant-ns\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAttacker crafts a malicious \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e object targeting standard resources like ConfigMaps.\u003c/li\u003e\n\u003cli\u003eAttacker inserts a \u003ccode\u003ematchConditions\u003c/code\u003e block containing a CEL expression that invokes \u003ccode\u003egenerator.apply(\u0026quot;target-namespace\u0026quot;, [resources])\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAttacker specifies a sensitive destination namespace (e.g., \u003ccode\u003ekube-system\u003c/code\u003e) as the first argument in the \u003ccode\u003egenerator.apply\u003c/code\u003e function.\u003c/li\u003e\n\u003cli\u003eAttacker creates a legitimate resource (e.g., a ConfigMap) in \u003ccode\u003etenant-ns\u003c/code\u003e to trigger the Kyverno admission webhook.\u003c/li\u003e\n\u003cli\u003eThe admission controller parses the \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e and executes the \u003ccode\u003egenerator.apply\u003c/code\u003e function at request time.\u003c/li\u003e\n\u003cli\u003eThe controller, operating with cluster-wide service account privileges, creates the attacker-defined resource in the target namespace.\u003c/li\u003e\n\u003cli\u003eFinal objective is achieved, such as injecting malicious configuration, disrupting network policy, or escalating privileges via unauthorized RoleBinding creation.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation allows for full namespace breakout and privilege escalation within the Kubernetes cluster. An attacker can inject unauthorized configuration into protected namespaces, modify network traffic flow via NetworkPolicies, or create elevated RoleBindings to gain persistent administrative access. Any Kubernetes cluster running Kyverno v1.18.0 or v1.18.1 that permits non-admin users to manage \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e resources is vulnerable to complete compromise.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImmediately upgrade Kyverno to a patched version that enforces namespace validation for the \u003ccode\u003egenerator\u003c/code\u003e library.\u003c/li\u003e\n\u003cli\u003eAudit all existing \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e objects for \u003ccode\u003ematchConditions\u003c/code\u003e blocks containing \u003ccode\u003egenerator.apply()\u003c/code\u003e calls.\u003c/li\u003e\n\u003cli\u003eRestrict RBAC permissions for creating \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e resources to highly trusted service accounts or cluster administrators until the patch is applied.\u003c/li\u003e\n\u003cli\u003eImplement Admission Controller logging to monitor for resource creation events originating from \u003ccode\u003eNamespacedMutatingPolicy\u003c/code\u003e triggers in sensitive namespaces.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-08-26T20:20:47Z","date_published":"2026-08-26T20:20:47Z","id":"https://feed.craftedsignal.io/briefs/2026-08-kyverno-cel-vulnerability/","summary":"A vulnerability in Kyverno v1.18.0 and v1.18.1 allows a namespace-scoped user to execute arbitrary resource creation across the entire cluster by exploiting an unvalidated namespace argument in CEL expressions.","title":"Kyverno Unvalidated CEL Namespace Argument Vulnerability","url":"https://feed.craftedsignal.io/briefs/2026-08-kyverno-cel-vulnerability/"}],"language":"en","title":"CraftedSignal Threat Feed - Kyverno (V1.18.0, V1.18.1)","version":"https://jsonfeed.org/version/1.1"}