{"id":"CVE-2026-94402","title":"IBM vulnerable to cross-site scripting (XSS) via unsanitized title truncation","summary":"IBM Carbon Charts 0.4.0 through 1.27.19 is vulnerable to cross-site scripting. The MeterChart component's Title.truncateTitle() function re-inserts a substring of user-supplied label text into the DOM via an unsanitized innerHTML write w…","severity":"medium","cvss":6.1,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","cvssSource":"cna","cwe":["CWE-79"],"vendor":"IBM","product":"@carbon/charts","affected":["@carbon/charts >= 0.4.0 <= 1.27.19","@carbon/charts-react >= 0.4.0 <= 1.27.19","@carbon/charts-angular >= 0.4.0 <= 1.27.19","@carbon/charts-vue >= 0.4.0 <= 1.27.19","@carbon/charts-svelte >= 0.4.0 <= 1.27.19"],"published":"2026-10-20","updated":"2026-10-20","sourceUpdated":"2026-10-20T21:31:46.027Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-94402","references":[{"url":"https://www.ibm.com/support/pages/node/7291785"}],"tags":["cve.org"],"ingestedAt":"2026-10-20T22:23:33.695Z","slug":"CVE-2026-94402","body":"## Overview\n\nIBM Carbon Charts 0.4.0 through 1.27.19 is vulnerable to cross-site scripting. The MeterChart component's Title.truncateTitle() function re-inserts a substring of user-supplied label text into the DOM via an unsanitized innerHTML write when the title exceeds the available container width. A remote attacker could exploit this vulnerability to execute arbitrary JavaScript in the victim's browser session.\n\n## Affected\n\n- `@carbon/charts >= 0.4.0 <= 1.27.19`\n- `@carbon/charts-react >= 0.4.0 <= 1.27.19`\n- `@carbon/charts-angular >= 0.4.0 <= 1.27.19`\n- `@carbon/charts-vue >= 0.4.0 <= 1.27.19`\n- `@carbon/charts-svelte >= 0.4.0 <= 1.27.19`\n\n## Remediation\n\nPlease update the library to the latest version available on npm:  https://www.npmjs.com/package/@carbon/charts\n\n### Workarounds\n\nIf an immediate upgrade to v1.27.20 is not possible, consuming applications should sanitize all user-influenced strings before passing them as data[0].group (or any label field) to a MeterChart. A DOMPurify call with ALLOWED_TAGS: [] applied to the value before it reaches the chart data will neutralize the payload. This is a temporary workaround only — upgrading to v1.27.20 remains the recommended remediation.","depth":"sunlit","depthScore":34,"depthScoreParts":{"impact":33.6,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}