{"id":"CVE-2026-94402","state":"PUBLISHED","title":"IBM vulnerable to cross-site scripting (XSS) via unsanitized title truncation","description":"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 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.","publishedAt":"2026-10-20T21:31:46.027Z","updatedAt":"2026-10-26T16:46:47.189Z","severity":{"score":6.1,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","source":"ibm"},"assigner":"ibm","products":["IBM @carbon/charts","IBM @carbon/charts-react","IBM @carbon/charts-angular","IBM @carbon/charts-vue","IBM @carbon/charts-svelte"],"affected":[{"vendor":"IBM","product":"@carbon/charts","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carbon_charts:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carbon_charts:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-react","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_react:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_react:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-angular","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_angular:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_angular:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-vue","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_vue:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_vue:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-svelte","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_svelte:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_svelte:1.27.19:*:*:*:*:*:*:*"]}],"references":["https://www.ibm.com/support/pages/node/7291785"],"weaknesses":["CWE-79"],"ingestedAt":"2026-10-29T20:13:34.582Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/94xxx/CVE-2026-94402.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-94402","state":"PUBLISHED","datePublished":"2026-10-20T21:31:46.027Z","dateUpdated":"2026-10-26T16:46:47.189Z","assignerShortName":"ibm","assignerOrgId":"9a959283-ebb5-44b6-b705-dcc2bbced522","dateReserved":"2026-09-21T13:43:42.740Z"},"containers":{"cna":{"title":"IBM vulnerable to cross-site scripting (XSS) via unsanitized title truncation","descriptions":[{"lang":"en","value":"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 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."}],"affected":[{"vendor":"IBM","product":"@carbon/charts","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carbon_charts:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carbon_charts:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-react","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_react:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_react:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-angular","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_angular:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_angular:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-vue","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_vue:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_vue:1.27.19:*:*:*:*:*:*:*"]},{"vendor":"IBM","product":"@carbon/charts-svelte","versions":[{"version":"0.4.0","status":"affected","lessThanOrEqual":"1.27.19","versionType":"semver"}],"cpes":["cpe:2.3:a:ibm:carboncharts_svelte:0.4.0:*:*:*:*:*:*:*","cpe:2.3:a:ibm:carboncharts_svelte:1.27.19:*:*:*:*:*:*:*"]}],"references":[{"url":"https://www.ibm.com/support/pages/node/7291785","tags":["vendor-advisory","patch"]}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV3_1":{"version":"3.1","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"CHANGED","confidentialityImpact":"LOW","integrityImpact":"LOW","availabilityImpact":"NONE","baseSeverity":"MEDIUM","baseScore":6.1,"vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-79","lang":"en","description":"CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","type":"CWE"}]}],"providerMetadata":{"shortName":"ibm","orgId":"9a959283-ebb5-44b6-b705-dcc2bbced522","dateUpdated":"2026-10-20T21:31:46.027Z"},"workarounds":[{"lang":"en","value":"If 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.","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>If 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.</p>"}]}],"solutions":[{"lang":"en","value":"Please update the library to the latest version available on npm:  https://www.npmjs.com/package/@carbon/charts","supportingMedia":[{"type":"text/html","base64":false,"value":"<p>Please update the library to the latest version available on npm: <a href=\"https://www.npmjs.com/package/@carbon/charts\" rel=\"nofollow\">https://www.npmjs.com/package/@carbon/charts</a></p>"}]}]},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-94402","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2026-10-26T15:37:04.942616Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-26T16:46:47.189Z"}}]}}}