2026-10-20 21:31CVE-2026-94402ibm
PUBLISHED5.2ApplicationCWE-79

IBM vulnerable to cross-site scripting (XSS) via unsanitized title truncation

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.

Problem type

Affected products

IBM

@carbon/charts

<= 1.27.19 - AFFECTED

@carbon/charts-react

<= 1.27.19 - AFFECTED

@carbon/charts-angular

<= 1.27.19 - AFFECTED

@carbon/charts-vue

<= 1.27.19 - AFFECTED

@carbon/charts-svelte

<= 1.27.19 - AFFECTED

References

JSON source

https://cveawg.mitre.org/api/cve/CVE-2026-94402
Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2026-94402",
    "assignerOrgId": "9a959283-ebb5-44b6-b705-dcc2bbced522",
    "assignerShortName": "ibm",
    "dateUpdated": "2026-10-20T21:31:46.027Z",
    "dateReserved": "2026-09-21T13:43:42.740Z",
    "datePublished": "2026-10-20T21:31:46.027Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "9a959283-ebb5-44b6-b705-dcc2bbced522",
        "shortName": "ibm",
        "dateUpdated": "2026-10-20T21:31:46.027Z"
      },
      "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.",
          "supportingMedia": [
            {
              "type": "text/html",
              "base64": false,
              "value": "<p>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.</p>"
            }
          ]
        }
      ],
      "affected": [
        {
          "vendor": "IBM",
          "product": "@carbon/charts",
          "cpes": [
            "cpe:2.3:a:ibm:carbon_charts:0.4.0:*:*:*:*:*:*:*",
            "cpe:2.3:a:ibm:carbon_charts:1.27.19:*:*:*:*:*:*:*"
          ],
          "versions": [
            {
              "version": "0.4.0",
              "status": "affected",
              "versionType": "semver",
              "lessThanOrEqual": "1.27.19"
            }
          ]
        },
        {
          "vendor": "IBM",
          "product": "@carbon/charts-react",
          "cpes": [
            "cpe:2.3:a:ibm:carboncharts_react:0.4.0:*:*:*:*:*:*:*",
            "cpe:2.3:a:ibm:carboncharts_react:1.27.19:*:*:*:*:*:*:*"
          ],
          "versions": [
            {
              "version": "0.4.0",
              "status": "affected",
              "versionType": "semver",
              "lessThanOrEqual": "1.27.19"
            }
          ]
        },
        {
          "vendor": "IBM",
          "product": "@carbon/charts-angular",
          "cpes": [
            "cpe:2.3:a:ibm:carboncharts_angular:0.4.0:*:*:*:*:*:*:*",
            "cpe:2.3:a:ibm:carboncharts_angular:1.27.19:*:*:*:*:*:*:*"
          ],
          "versions": [
            {
              "version": "0.4.0",
              "status": "affected",
              "versionType": "semver",
              "lessThanOrEqual": "1.27.19"
            }
          ]
        },
        {
          "vendor": "IBM",
          "product": "@carbon/charts-vue",
          "cpes": [
            "cpe:2.3:a:ibm:carboncharts_vue:0.4.0:*:*:*:*:*:*:*",
            "cpe:2.3:a:ibm:carboncharts_vue:1.27.19:*:*:*:*:*:*:*"
          ],
          "versions": [
            {
              "version": "0.4.0",
              "status": "affected",
              "versionType": "semver",
              "lessThanOrEqual": "1.27.19"
            }
          ]
        },
        {
          "vendor": "IBM",
          "product": "@carbon/charts-svelte",
          "cpes": [
            "cpe:2.3:a:ibm:carboncharts_svelte:0.4.0:*:*:*:*:*:*:*",
            "cpe:2.3:a:ibm:carboncharts_svelte:1.27.19:*:*:*:*:*:*:*"
          ],
          "versions": [
            {
              "version": "0.4.0",
              "status": "affected",
              "versionType": "semver",
              "lessThanOrEqual": "1.27.19"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "lang": "en",
              "description": "CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')",
              "cweId": "CWE-79",
              "type": "CWE"
            }
          ]
        }
      ],
      "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",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
            "attackVector": "NETWORK",
            "attackComplexity": "LOW",
            "privilegesRequired": "NONE",
            "userInteraction": "REQUIRED",
            "scope": "CHANGED",
            "confidentialityImpact": "LOW",
            "integrityImpact": "LOW",
            "availabilityImpact": "NONE",
            "baseScore": 6.1,
            "baseSeverity": "MEDIUM"
          }
        }
      ],
      "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>"
            }
          ]
        }
      ]
    }
  }
}