Summary
Kyverno's admissionpolicygenerator controller generates Kubernetes ValidatingAdmissionPolicies (VAPs) and MutatingAdmissionPolicies (MAPs) from Kyverno ValidatingPolicies and MutatingPolicies. When folding PolicyExceptions into the generated VAPs, the controller's getCELExceptions and getExceptions helpers match exceptions by policy name only, ignoring all enforcement gates: the --enablePolicyException feature flag (default false), the --exceptionNamespace confinement, and the policyRefs[].kind check. Because the Kyverno webhook no longer intercepts resources once a VAP is generated for a policy, the generated VAP becomes the sole enforcement layer. Any user who can create a namespaced PolicyException can therefore exempt arbitrary resources from cluster-scoped ValidatingPolicy enforcement, regardless of how the cluster administrator configured the exception gates.
Impact
A user who can create policyexceptions.policies.kyverno.io in any namespace — even when --enablePolicyException is false and the Kyverno validation webhook issues only a warning — can cause the admissionpolicygenerator to bake that exception into the generated VAP. This bypasses the cluster-wide ValidatingPolicy enforcement for resources matching the exception's conditions, regardless of --exceptionNamespace confinement or per-policy kind restrictions. The impact is a cluster-wide policy bypass affecting the integrity of admission control for all resources governed by the affected ValidatingPolicy.
Detection
Audit all namespaced PolicyException resources (policyexceptions.policies.kyverno.io) across the cluster and compare them against the --exceptionNamespace and --enablePolicyException settings in the Kyverno admission-controller configuration. Any PolicyException that exists outside the configured exception namespace or was created while --enablePolicyException=false should be treated as potentially malicious. Inspect the matchConditions of generated ValidatingAdmissionPolicies for exception conditions injected from these resources.
Mitigation
Upgrade Kyverno to version 1.19.2 or later, which enforces the --enablePolicyException, --exceptionNamespace, and policyRefs[].kind gates in the admissionpolicygenerator exception selection logic. As an interim measure, restrict create and update permissions on policyexceptions.policies.kyverno.io to the configured exception namespace only, and regularly audit the matchConditions of generated ValidatingAdmissionPolicy resources for unexpected exception entries.