Description
Kyverno is a policy engine designed for cloud native platform engineering teams. Prior to 2.5.2, Vue 3's v-html directive is the framework-documented mechanism for injecting raw HTML, and it intentionally disables the auto-escaping that {{ }} interpolation provides. The PropertyCard.vue component uses v-html for the else branch of the URL check, meaning any non-URL string value flows directly into the DOM as HTML. The isURL() guard only filters values that parse as http: or https: URLs, so any HTML payload not starting with those schemes bypasses it entirely. The data originates from Kubernetes PolicyReport .results[].properties fields, which are arbitrary string maps populated by policy engines and potentially by any principal with write access to PolicyReport objects in the cluster. This vulnerability is fixed in 2.5.2.
Published: 2026-05-12
Score: 6.1 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Kyverno versions prior to 2.5.2 allow stored cross‑site scripting through the PropertyCard component. The component uses Vue's v-html to render arbitrary strings from a policy report's properties field without escaping. An attacker with permission to write PolicyReport objects can inject a payload that executes when the issuer's UI loads, potentially hijacking accounts, leaking data, and executing arbitrary scripts. This is a classic stored XSS vulnerability, classified as CWE-79.

Affected Systems

Kyverno policy engine before 2.5.2, including the policy‑reporter‑ui component, is affected. All installations of Kyverno that have not applied the 2.5.2 (or newer) release are vulnerable.

Risk and Exploitability

The CVSS score of 6.1 indicates moderate severity. With no publicly available exploit and no listing in the CISA KEV catalog, the likelihood of exploitation depends on a cluster principal possessing write access to PolicyReport objects. An attacker could craft a malicious policy report that injects script fragments; when the UI is rendered, the script runs in the context of the viewer's browser, enabling credential theft or session hijacking.

Generated by OpenCVE AI on May 13, 2026 at 00:23 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Kyverno to version 2.5.2 or later, which removes the vulnerable use of v-html.
  • Restrict write permissions on PolicyReport objects to only trusted principals to limit the ability to inject malicious content.
  • If an immediate upgrade is not possible, sanitize or strip raw HTML from any property values before rendering by modifying the PropertyCard component or applying a custom UI patch.

Generated by OpenCVE AI on May 13, 2026 at 00:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-q98m-7w8c-w388 Kyverno policy-reporter-ui has XSS via Stored Property Values in PropertyCard Component
History

Tue, 26 May 2026 13:45:00 +0000

Type Values Removed Values Added
First Time appeared Kyverno policy-reporter-ui
CPEs cpe:2.3:a:kyverno:policy-reporter-ui:*:*:*:*:*:*:*:*
Vendors & Products Kyverno policy-reporter-ui

Wed, 13 May 2026 15:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 13 May 2026 00:45:00 +0000

Type Values Removed Values Added
First Time appeared Kyverno
Kyverno kyverno
Vendors & Products Kyverno
Kyverno kyverno

Tue, 12 May 2026 23:15:00 +0000

Type Values Removed Values Added
Description Kyverno is a policy engine designed for cloud native platform engineering teams. Prior to 2.5.2, Vue 3's v-html directive is the framework-documented mechanism for injecting raw HTML, and it intentionally disables the auto-escaping that {{ }} interpolation provides. The PropertyCard.vue component uses v-html for the else branch of the URL check, meaning any non-URL string value flows directly into the DOM as HTML. The isURL() guard only filters values that parse as http: or https: URLs, so any HTML payload not starting with those schemes bypasses it entirely. The data originates from Kubernetes PolicyReport .results[].properties fields, which are arbitrary string maps populated by policy engines and potentially by any principal with write access to PolicyReport objects in the cluster. This vulnerability is fixed in 2.5.2.
Title Kyverno: [policy-reporter-ui] XSS via Stored Property Values in PropertyCard Component
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 6.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N'}


Subscriptions

Kyverno Kyverno Policy-reporter-ui
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-05-13T14:33:16.039Z

Reserved: 2026-05-05T16:33:55.844Z

Link: CVE-2026-44245

cve-icon Vulnrichment

Updated: 2026-05-13T14:32:54.203Z

cve-icon NVD

Status : Analyzed

Published: 2026-05-12T23:16:18.060

Modified: 2026-05-26T08:35:25.513

Link: CVE-2026-44245

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-13T00:30:28Z

Weaknesses