{"id":"CVE-2026-54523","state":"PUBLISHED","title":"Kyverno: NamespacedGeneratingPolicy generator.apply() namespace argument unvalidated -- background controller creates RoleBindings in any namespace including kube-system","description":"Kyverno is a policy engine designed for cloud native platform engineering teams. From 1.18.0 until 1.18.2, the NamespacedMutatingPolicy CEL compiler exposes the generator library to matchConditions, allowing a namespace-scoped policy to invoke generator.apply(namespace, resources) with an arbitrary target namespace. The validation in pkg/cel/policies/mpol/validate.go checks that the policy compiles but does not enforce namespace scope, and GenerateResources in pkg/cel/libs/context.go does not reject the cross-namespace target. A user who can create NamespacedMutatingPolicy objects in one namespace can cause the admission controller, operating with cluster-wide privileges, to create ConfigMaps, NetworkPolicies, Secrets, RoleBindings, and other resources in another namespace, enabling unauthorized modification and potential privilege escalation. This issue is fixed in version 1.18.2.","publishedAt":"2026-08-26T14:20:37.236Z","updatedAt":"2026-08-26T15:06:37.284Z","severity":{"score":9.6,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["kyverno kyverno"],"affected":[{"vendor":"kyverno","product":"kyverno","versions":[{"version":">= 1.18.0, < 1.18.2","status":"affected"}]}],"references":["https://github.com/kyverno/kyverno/security/advisories/GHSA-79gf-7frw-68m9","https://github.com/kyverno/kyverno/pull/16238","https://github.com/kyverno/kyverno/commit/0919553c0ea1904f8d891280c92018da97946a06","https://github.com/kyverno/kyverno/commit/5164bcdeda5b57678bc2d7a03ecc2cbb02982dae","https://github.com/kyverno/sdk/commit/6573937441443e1ba5af9fbb28d5c0f20297f9df","https://github.com/kyverno/kyverno/releases/tag/v1.18.2"],"weaknesses":["CWE-862"],"ingestedAt":"2026-10-29T20:12:24.861Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/54xxx/CVE-2026-54523.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-54523","state":"PUBLISHED","datePublished":"2026-08-26T14:20:37.236Z","dateUpdated":"2026-08-26T15:06:37.284Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-06-15T18:40:01.651Z"},"containers":{"cna":{"title":"Kyverno: NamespacedGeneratingPolicy generator.apply() namespace argument unvalidated -- background controller creates RoleBindings in any namespace including kube-system","descriptions":[{"lang":"en","value":"Kyverno is a policy engine designed for cloud native platform engineering teams. From 1.18.0 until 1.18.2, the NamespacedMutatingPolicy CEL compiler exposes the generator library to matchConditions, allowing a namespace-scoped policy to invoke generator.apply(namespace, resources) with an arbitrary target namespace. The validation in pkg/cel/policies/mpol/validate.go checks that the policy compiles but does not enforce namespace scope, and GenerateResources in pkg/cel/libs/context.go does not reject the cross-namespace target. A user who can create NamespacedMutatingPolicy objects in one namespace can cause the admission controller, operating with cluster-wide privileges, to create ConfigMaps, NetworkPolicies, Secrets, RoleBindings, and other resources in another namespace, enabling unauthorized modification and potential privilege escalation. This issue is fixed in version 1.18.2."}],"affected":[{"vendor":"kyverno","product":"kyverno","versions":[{"version":">= 1.18.0, < 1.18.2","status":"affected"}]}],"references":[{"url":"https://github.com/kyverno/kyverno/security/advisories/GHSA-79gf-7frw-68m9","name":"https://github.com/kyverno/kyverno/security/advisories/GHSA-79gf-7frw-68m9","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/kyverno/kyverno/pull/16238","name":"https://github.com/kyverno/kyverno/pull/16238","tags":["x_refsource_MISC"]},{"url":"https://github.com/kyverno/kyverno/commit/0919553c0ea1904f8d891280c92018da97946a06","name":"https://github.com/kyverno/kyverno/commit/0919553c0ea1904f8d891280c92018da97946a06","tags":["x_refsource_MISC"]},{"url":"https://github.com/kyverno/kyverno/commit/5164bcdeda5b57678bc2d7a03ecc2cbb02982dae","name":"https://github.com/kyverno/kyverno/commit/5164bcdeda5b57678bc2d7a03ecc2cbb02982dae","tags":["x_refsource_MISC"]},{"url":"https://github.com/kyverno/sdk/commit/6573937441443e1ba5af9fbb28d5c0f20297f9df","name":"https://github.com/kyverno/sdk/commit/6573937441443e1ba5af9fbb28d5c0f20297f9df","tags":["x_refsource_MISC"]},{"url":"https://github.com/kyverno/kyverno/releases/tag/v1.18.2","name":"https://github.com/kyverno/kyverno/releases/tag/v1.18.2","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":9.6,"baseSeverity":"CRITICAL","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"LOW","scope":"CHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-862","lang":"en","description":"CWE-862: Missing Authorization","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-08-26T14:20:55.122Z"},"source":{"advisory":"GHSA-79gf-7frw-68m9","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://github.com/kyverno/kyverno/security/advisories/GHSA-79gf-7frw-68m9","tags":["exploit"]}],"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-26T15:06:17.140283Z","id":"CVE-2026-54523","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-08-26T15:06:37.284Z"}}]}}}