Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessInject untrusted HTML into chart text option
-
DeliveryVictim starts print via exporting menu
-
Exploitbeforeprint handler re-renders chart in Chromium
-
ExecutionTrusted Types callback throws, raw markup hits innerHTML
-
ImpactEmbedded event handler runs in page origin
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Four concrete prerequisites, all stated by the vendor advisory, must hold together: (1) untrusted/attacker-influenced data must reach an HTML-rendered chart text option - useHTML titles, axis labels, data labels, or text set by responsive rules (Stock, Maps, and Gantt are included as they ship from the same package); (2) the hosting page must re-render/update the chart from a beforeprint event handler; (3) the browser must be Chromium, where the Trusted Types policy callback throws while beforeprint runs, forcing the unfiltered innerHTML fallback before the allow-list is applied; and (4) printing must actually be initiated - the exporting menu's print item triggers this on its own. These conditions (reflected as AT:P and UI:A) substantially limit exploitation: a non-Chromium browser, a page that does not re-render on beforeprint, or configurations without untrusted data in chart text options are not affected. Affected versions are 12.0.0 through <12.6.1 and 13.0.0 through 13.0.2; the only complete fix stated by the vendor is upgrading to 12.6.1 or 13.1.0, with an IIFE parseMarkup override offered as a drop-in workaround for all affected versions. |
| Impact | This is a genuine but conditional client-side XSS (CWE-79) in a very widely deployed charting library, best treated as an important rather than emergency fix - consistent with the input's 'this_week' decision label, not act_now/emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:A, VC:H/VI:H) scores 7.2 High, but the AT:P (attack requirement) and UI:A (active user interaction) metrics correctly reflect strong real-world constraints: exploitation is confirmed by the vendor advisory to require a specific chain - untrusted data reaching HTML text options, the hosting page re-rendering the chart from a beforeprint handler, a Chromium browser where the Trusted Types callback throws, and the user actually initiating printing. No CISA KEV listing and no EPSS score are present in the input, so there is no signal of active or widespread exploitation; this is 'no public exploit identified as active exploitation.' A public PoC reference exists (the vendor's jsfiddle 'Live demo & testing' link and a regression test using '<img onerror>' markup), but it is not verified as working weaponized exploit code. Net: a legitimate priority for teams that embed untrusted data in Highcharts titles/labels and re-render on beforeprint, but the combination of required conditions makes mass, opportunistic exploitation unlikely. The DOMParser fallback detail (AT:P) is directly stated in the advisory and commit, so the mechanism is well-evidenced rather than inferred. |
| Exploit ScenarioDerived | An attacker gets untrusted content (e.g. a user-controlled chart title, data label, or responsive text option) into a Highcharts configuration on a page that re-renders the chart from a beforeprint handler in Chromium. When a victim starts printing - which the exporting menu's print item does on its own - the Trusted Types callback throws, the parser falls back to assigning raw markup to innerHTML before the allow-list runs, and embedded event handlers execute in the hosting page's origin. A public PoC reference (vendor jsfiddle demo) exists but is not verified as working exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Client-side cross-site scripting in Highcharts 12.0.0 through <12.6.1 and 13.0.0 through 13.0.2 - including the Stock, Maps and Gantt products shipped in the same package - lets markup placed in HTML-rendered text options execute event handlers in the origin of the page hosting the chart when that page re-renders the chart from a Chromium beforeprint handler and printing is started. All four of those conditions must hold together, so exposure is confined to pages that route untrusted data into useHTML titles, axis labels, data labels or responsive text; the issue is rated high (CVSS 4.0 base 7.2; assessed CVSS 3.1 AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:N) rather than critical. No public exploit is identified at time of analysis, and vendor-released fixes 12.6.1 and 13.1.0 are available.
RemediationAI
Vendor-released patches: upgrade to Highcharts 12.6.1 on the 12.x branch or 13.1.0 on the 13.x branch - the vendor states updating is the only complete fix - for example npm install highcharts@13.1.1, or if loading from the CDN switch to the versioned URL https://code.highcharts.com/13.1.1/highcharts.js (see https://github.com/highcharts/highcharts/releases/tag/v13.1.0 and the installation guide). For any affected version from 12.0.0 through 13.0.2 that cannot be upgraded immediately, the advisory (GHSA-65hg-cf3f-5m39) publishes a drop-in IIFE, to be executed after Highcharts loads, that overrides AST.prototype.parseMarkup so markup is parsed via DOMParser with a retry and any residual fallback goes into a detached document rather than a live element's innerHTML; a live demo and test page is linked at https://jsfiddle.net/BlackLabel/pb6jLf7g/. Note that the workaround is a JavaScript shim that must be deployed and maintained alongside the library, and that the vulnerability's own prerequisites also describe the exposure path: pages that do not re-render charts from beforeprint handlers in Chromium, or that keep untrusted data out of HTML-rendered text options entirely, do not reach the unsanitized insertion, but the vendor does not present either as a supported substitute for the patched release.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Highcharts renders rich text through an AST helper class (ts/Core/Renderer/HTML/AST.ts) that parses markup with DOMParser and then applies an element/attribute allow-list to the resulting DOM. The flaw is a CWE-79 sanitization-ordering error: when DOMParser.parseFromString throws, the parser previously fell back to creating a div and assigning the raw string to its innerHTML in the live hosting document, applying the allow-list only after the markup had already been materialised in that document. In Chromium the Trusted Types policy callback used by the parser can throw while a beforeprint handler is running (Chromium issue 40222135, referenced in the code comments), which is exactly the state a page enters when it redraws a chart from a beforeprint handler; anything parsed in that moment - useHTML titles, labels, data labels, or text set by responsive rules - is inserted unfiltered, and event handlers in it execute in the page origin once printing begins. The upstream fix (commit abde7c576793bf50b0e0636e59b49630de6dd0d5) retries DOMParser with the raw string after the first failure and, if DOMParser remains unusable, parses into a detached inert document created via H.doc.implementation.createHTMLDocument('') instead of a live element; a QUnit regression test asserts that onerror attributes are stripped and that a sentinel flag never fires across both fallback paths. CPE cpe:2.3:a:highcharts:highcharts:*:*:*:*:*:*:*:* covers the package; the CVSS 4.0 vector's AT:P (attack requires a specific pre-existing deployment condition - Chromium plus a beforeprint re-render) and UI:A reflect these environmental prerequisites.
Know when Highcharts gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:H/VI:H/VA:N/SC:L/SI:L/SA:N
Requires untrusted config data plus a beforeprint re-render in Chromium (AC:H) and victim-initiated printing (UI:R); handlers run in the page origin beyond the component (S:C), so C:H/I:H, A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Highcharts JS is a JavaScript charting library based on SVG. From 12.0.0 until 12.6.1 and 13.1.0, Highcharts falls back to assigning raw markup to innerHTML when DOMParser cannot return a document, before its allow-list is applied. In Chromium, the Trusted Types callback can throw while a beforeprint handler runs, so a page that redraws a chart during beforeprint can insert untrusted HTML text options into the hosting document. Event handlers in that markup then run in the page origin when printing begins. The issue affects HTML-rendered titles, labels, data labels, responsive text, and the Stock, Maps, and Gantt products shipped in the same package. This issue is fixed in 12.6.1 and 13.1.0.
Technical POC Analysis
CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically a client-side DOM XSS where sanitization happens after parsing rather than before insertion.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Highcharts, a widely embedded charting library used across the Stock, Maps and Gantt product lines, carries a high-severity cross-site scripting flaw in its HTML-rendering text options, which can allow attacker-supplied markup to execute within the hosting application's origin. Because Highcharts is typically embedded in customer-facing and internal web applications, successful exploitation could undermine user trust, expose session data, or enable compromise of authenticated users. Leadership should care because the affected library is likely present across multiple applications, and remediation requires coordinated library updates rather than a single product fix.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Highcharts
View allDOM-based cross-site scripting in Highcharts Grid (@highcharts/grid-lite and @highcharts/grid-pro) versions 2.0.0 throug
Cross-site scripting in Highcharts Dashboards (npm @highcharts/dashboards) from 1.0.0 through 4.2.1 lets an attacker who
Event-handler attribute injection in Highcharts Grid's custom SVG icon definitions (npm packages @highcharts/grid-lite a
Cross-site scripting in Highcharts Grid Pro 2.0.0 through 3.1.0 lets an attacker who can influence column configuration
A DOM-based cross-site scripting flaw in Highcharts Grid lets an attacker who can influence the Grid configuration set c
DOM-based cross-site scripting in Highcharts Dashboards edit mode lets markup placed in the fullscreen language labels e
Improper neutralization of HTML in the Highcharts Dashboards edit-mode sidebar lets markup supplied through the Dashboar
Cross-site scripting in Highcharts JS (Core, plus the Stock, Maps and Gantt builds shipped from the same package) affect
Cross-site scripting in Highcharts JS affects the 10.x branch before 11.4.9, 12.x before 12.6.1, and 13.x through 13.0.2
Prototype pollution in the Highcharts JS charting library (6.1.0 up to 11.4.9, 12.0.0 up to 12.6.1, and 13.0.0 through 1
Prototype pollution in Highcharts JS 13.0.0 through 13.0.2 lets attacker-controlled series point data write integer-keye
SVG anchors whose xlink:href carries a javascript: URL slip past the markup filter that Highcharts applies to href and s
EUVD-2026-112307
GHSA-65hg-cf3f-5m39
NVD
CVE.org
Exploit-DB