Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessInject javascript: URL into chart text option
-
DeliveryChart exported or SVG markup serialized
-
Exploitxlink:href survives scheme filter
-
ExecutionSerialized SVG re-parsed as live document
-
PersistUser activates crafted anchor
-
ImpactScript executes in document 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 | Exploitation requires a specific three-part chain stated by the vendor: (1) attacker-controlled untrusted data must reach a chart text option such as the title (via an SVG anchor using xlink:href with a javascript: URL); (2) the chart must be exported (including the default SVG download via the exporting module) or its container markup serialized so the XLink namespace is declared, and that output must be parsed again as a document (downloaded SVG opened in a browser, or exported/server-rendered markup inlined into a page); and (3) a user must activate (click) the link. The flaw does NOT trigger in the originally rendered live page, because there the attribute is written without the XLink namespace and browsers do not treat the anchor as a link - this is the key limiting factor. It is independent of whether useHTML is set. Applications that never place untrusted data into chart configuration, or never export/re-inline the SVG, are not exposed. |
| Impact | This is a stored/DOM XSS (CWE-79) in the Highcharts JS charting library where an SVG anchor's xlink:href attribute escapes the allowed-scheme filter that guards href and src, letting a javascript: URL survive into serialized/exported SVG output. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:A, score 7.2) is internally consistent with the mechanism described: AT:P reflects that exploitation is not possible in the live rendered page (the attribute is written without the XLink namespace so browsers do not treat it as a link) and only becomes live after the chart is exported or server-rendered and that markup is parsed again; UI:A reflects that a user must activate the link; PR:L reflects that the attacker must be able to place untrusted data into a chart text option. There is no CISA KEV listing and no EPSS score in the provided data, so widespread automated exploitation is not indicated. A public reference containing the attack payload exists (the fix commit adds a unit test using '<a xlink:href="javascript:...">'), but there is no packaged weaponized exploit and no evidence of in-the-wild use. The vuln.today priority is 'this_week' (not act_now/emergency), consistent with a real but conditional client-side issue rather than a mass-exploitation emergency: it is a genuine patch-this-cycle item for anyone rendering attacker-influenced chart text and then exporting or re-inlining that SVG, but the multi-step precondition chain (attacker-controlled text + export/re-parse + user click) keeps real-world risk below what the 7.2 base score alone might suggest for environments that never expose untrusted chart configuration. |
| Exploit ScenarioDerived | An application lets untrusted input populate a chart text option (such as the title) and then offers the chart's SVG as a download or inlines the server-rendered SVG into another page. The attacker supplies a title containing an SVG anchor whose xlink:href is a javascript: URL; this survives the text filter and is preserved verbatim in the exported SVG, which declares the XLink namespace. When a victim opens the downloaded SVG in a browser or views the page that inlined it and clicks the link, attacker script runs in that document's origin. The fix commit publicly includes a unit-test payload demonstrating the injection, though no standalone weaponized exploit is provided. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
SVG anchors whose xlink:href carries a javascript: URL slip past the markup filter that Highcharts applies to href and src, so a chart text option such as the title can retain an active script link in its serialized form. The bug affects npm package highcharts from 10.3.2 through the 11.x, 12.x and 13.x branches prior to 11.4.9, 12.6.2 and 13.1.1 respectively, and only becomes dangerous when the chart is exported (the default SVG download declares the XLink namespace) or its container markup is serialized and then re-parsed as a document, at which point a user click runs script in that document's origin - the live rendered page itself does not produce a clickable link. Exploitation therefore needs attacker-controlled data in the chart configuration, an export/re-inline step, and user interaction (CVSS:4.0 PR:L/UI:A, and the assessor's CVSS:3.1 AC:H/PR:L/UI:R with scope change); no public exploit code or in-the-wild activity was identified at time of analysis, and the priority label is this_week rather than emergency.
RemediationAI
Vendor-released patches are 11.4.9, 12.6.2 and 13.1.1; upgrade the affected branch to its fixed release (for example npm install highcharts@13.1.1), and if you load from the CDN switch to versioned URLs such as https://code.highcharts.com/13.1.1/highcharts.js, per the advisory at https://github.com/highcharts/highcharts/security/advisories/GHSA-mw4f-gj5x-6xr4. The vendor also publishes a drop-in workaround for all affected versions (10.3.2 through 13.1.0): load an IIFE after Highcharts and before creating any chart that wraps AST.filterUserAttributes, deleting any xlink:href value that does not start with an allowed reference prefix, with the fix commit at https://github.com/highcharts/highcharts/commit/6cf359fb144aa51fdc105e2b9bbd013439b02c88. Where upgrading is not yet possible, treat exported and server-rendered chart SVG as untrusted markup - do not open downloaded SVG exports directly in a browser and do not inline exported or server-rendered chart markup into pages - and keep attacker-controlled strings out of text options such as the title, accepting that these are partial mitigations rather than a complete fix.
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 chart text through an AST layer (ts/Core/Renderer/HTML/AST.ts) that sanitizes user-supplied markup attributes against an allowed-scheme list; the attribute set passed to that check covered background, dynsrc, href, lowsrc and src but omitted xlink:href, so a javascript: URL on an SVG <a> element was never validated. This is CWE-79 (improper neutralization of input during web page generation), and the defect is independent of the useHTML option. The limiting technical factor is namespace handling: in the live DOM the attribute is written without the XLink namespace, so browsers do not treat the anchor as a link there; however, the exporting module's SVG output - including the default SVG download - declares the XLink namespace and preserves the attribute verbatim, as does the serialized chart container markup, so any document that re-parses that output (an opened SVG file or a page inlining exported/server-rendered markup) contains a functioning link. The upstream commit adds 'xlink:href' to the filtered attribute list and adds a unit test asserting that getSVG() output no longer contains xlink:href="javascript:.
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
AC:H and UI:R because exploitation needs the export/re-parse chain plus a user click; PR:L because the attacker must control chart text config; S:C as script runs in the re-parsed document's origin with limited C/I impact.
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 10.3.2 until 11.4.9, 12.6.2, and 13.1.1, Highcharts accepts an SVG anchor xlink:href attribute without applying the allowed-scheme check used for href and src. An attacker who controls a chart text option can preserve a javascript URL in serialized chart output. When exported or server-rendered SVG is parsed again and a user activates the link, script runs in the origin of that document. This issue is fixed in 11.4.9, 12.6.2 and 13.1.1.
Technical POC Analysis
CWE-79 (cross-site scripting via improper neutralization).
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 used charting library, has a high-severity vulnerability (CVE-2026-116796) that can allow script execution when charts are exported or re-serialized, affecting any application that uses Highcharts 10.3.2 through 13.x. This requires attacker-controlled chart configuration, an export or inlining step, and user interaction, but successful exploitation could lead to data compromise or account takeover within the context of the victim's session. Leadership should prioritize remediation because the library is likely embedded across multiple products, and the absence of a patch increases exposure until mitigations are applied.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting chart configuration inputs to trusted sources, sanitizing all user-supplied data that flows into Highcharts options (especially href/src fields), disabling export functionality or using a CSP that blocks inline scripts in exported documents, and ensuring exported SVG content is served with a restrictive Content-Security-Policy.
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
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, M
EUVD-2026-112279
GHSA-mw4f-gj5x-6xr4
NVD
CVE.org
Exploit-DB