Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain ability to influence dashboard configuration
-
DeliverySet chartConstructor to a non-constructor Highcharts utility
-
ExploitEmbed markup/event handlers in chartOptions
-
ExecutionBoard renders and copies options onto container
-
ImpactScript executes in hosting 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 | Requires that untrusted data reach the Highcharts Dashboards component configuration and specifically control the chartConstructor property (and the accompanying chartOptions) of a HighchartsComponent. The flaw is in versions >=1.0.0 up to and including 4.2.1 (fixed in 4.2.2); it triggers automatically when the board renders, with no user interaction beyond rendering. What LIMITS exploitation: the attacker must be able to influence the board/dashboard configuration (hence PR:L - not fully unauthenticated against an untouched default), so deployments where dashboard configs are entirely developer-controlled and never carry user/tenant-supplied data are not exposed. The vendor provides a drop-in createChart override restricting chartConstructor to chart/stockChart/mapChart/ganttChart as a workaround, but states upgrading (npm @highcharts/dashboards@4.2.3 or a versioned CDN URL) is the fix. |
| Impact | This is a genuine priority within its deployment scope but not a drop-everything emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) describes a network-reachable, low-complexity XSS (CWE-79) that needs some privilege (PR:L) - consistent with the advisory's requirement that the attacker control, or inject untrusted data into, the Dashboards component configuration. No user interaction beyond rendering the board is required (UI:N), which raises practical exploitability wherever config content crosses a trust boundary. The vuln.today decision label is 'this_week' (not act_now/emergency), aligning with a serious-but-scheduled posture. KEV status is NO (not listed by CISA), and no EPSS score was provided, so exploitation probability cannot be quantified from the input. No public exploit identified at time of analysis - the references are a vendor GHSA advisory, the fix commit, and a release tag, not working exploit code. Net: the severity is real (script execution in the hosting page origin), but the PR:L precondition and absence of KEV/known exploitation make this a targeted, config-dependent risk rather than mass-exploitable; prioritize patching for any deployment where dashboard configuration can carry untrusted data. |
| Exploit ScenarioDerived | An application renders a Highcharts Dashboard whose configuration is partly derived from untrusted input (e.g., a user-supplied or multi-tenant board definition). The attacker sets chartConstructor to a non-constructor public Highcharts utility function so their chartOptions are copied onto the container element as attributes/markup, and event handlers execute in the hosting page's origin as soon as the board renders. No public exploit code was identified, but the mechanism is fully documented in the vendor GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Cross-site scripting in Highcharts Dashboards (npm @highcharts/dashboards) from 1.0.0 through 4.2.1 lets an attacker who can influence dashboard configuration supply an arbitrary chartConstructor value, which the component resolves as an unchecked lookup into the Highcharts namespace and then invokes with the container element and chartOptions; utility members reached this way copy attacker-controlled options onto the container as properties or attributes, so markup and event handlers execute in the origin hosting the page when the board renders, with no user interaction beyond rendering. The CVSS vector requires low-privileged access (PR:L) because the attacker must get untrusted data into the board configuration, and the independently assessed vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N) rates confidentiality and integrity impact as low with scope change rather than full compromise, while the CNA score is 8.6. No public exploit code and no CISA KEV entry are associated with this CVE at time of analysis, but a vendor workaround and a patched release exist and the issue is prioritized as this_week.
RemediationAI
Upgrade Highcharts Dashboards to the patched release: with npm run npm install @highcharts/dashboards@4.2.3 as the advisory instructs (the fixed release is tagged dashboards-v4.2.2 and npm metadata lists 4.2.2 as the fix point), and if loading from a CDN switch to a versioned URL such as https://code.highcharts.com/dashboards/4.2.3/dashboards.js rather than a floating latest path; for the bundled library, EUVD tracks highcharts < 13.1.0 as affected, so align that dependency as well. If the update cannot be applied immediately, the vendor supplies a drop-in workaround to paste immediately after importing the libraries and before any board renders: wrap Dashboards.HighchartsComponent.prototype.createChart so that any this.chartConstructor value outside the allowlist ['chart','stockChart','mapChart','ganttChart'] is reset to 'chart' before delegating to the original method - its trade-off is that it silently downgrades unexpected constructor requests, must be re-applied whenever the library is reloaded, and does not fix the underlying unchecked lookup elsewhere in the code path, so it is a stopgap only. Regardless of patch status, ensure board configurations are not built from untrusted user or tenant input, since exploitation requires attacker-influenced configuration to reach the HighchartsComponent; deployments where dashboard configs are entirely developer-controlled and never carry user-supplied data are not exposed. Track the advisory at https://github.com/highcharts/highcharts/security/advisories/GHSA-grj7-r4jv-pw9j and the fix commit at https://github.com/highcharts/highcharts/commit/98d3652cdc4f66fbccbbb8b4184ecd8f647f74de.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Highcharts Dashboards renders boards from a declarative configuration, and its HighchartsComponent selects a chart factory from the Highcharts namespace object (referred to internally as charter) using the user-supplied chartConstructor value. Before the fix the code performed a plain property read, charter[this.chartConstructor], with a fallback to 'chart' only when the value was falsy, so any other public member of the namespace - including utility functions - could be named. Those utilities are invoked with the component's container element and its chartOptions as arguments, and their normal behavior of copying options onto the target object results in attacker-controlled option keys becoming DOM properties or attributes on the container; values containing markup or event-handler attributes therefore execute in the hosting page origin. The commit 98d3652cdc4f66fbccbbb8b4184ecd8f647f74de closes this by allowlisting only 'chart', 'stockChart', 'mapChart' and 'ganttChart' (using an indexOf check that resets anything else to 'chart') and by verifying with Object.hasOwnProperty.call before reading the factory. This is CWE-79 (improper neutralization of input during web page generation), and the trigger is configuration-driven: it fires automatically during board rendering whenever untrusted data reaches the Dashboards component configuration, with no additional user interaction.
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:N/PR:L/UI:N/VC:H/VI:H/VA:N/SC:L/SI:L/SA:N
Attacker must influence dashboard config (PR:L); script runs in the hosting page origin so scope changes (S:C); stored-XSS style low confidentiality/integrity impact, no availability 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 1.0.0 until 4.2.2, Highcharts Dashboards uses chartConstructor as an unchecked property lookup in the Highcharts namespace and invokes the selected member with the component container and chartOptions. An attacker who controls dashboard configuration can select a public utility function instead of a supported chart constructor, causing attacker-controlled options to be copied to the container as properties or attributes. Markup and event handlers can then execute in the hosting page origin when the board renders. No user interaction beyond rendering the board is required. This issue is fixed in 4.2.2.
Technical POC Analysis
CWE-79 (Improper Neutralization of Input During Web Page Generation).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Highcharts Dashboards versions 1.0.0 through 4.2.1 contain a high-severity cross-site scripting flaw (CVE-2026-118245) that allows a low-privileged attacker who can influence dashboard configuration to execute arbitrary script in the hosting page's origin when the board renders. Any organization using the affected npm package to embed dashboards for customers or internal users is exposed to session hijacking, data theft, and defacement without user interaction beyond page load. Leadership should prioritize remediation because the vulnerability affects confidentiality and integrity of web-facing applications and could erode customer trust if exploited.
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
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
SVG anchors whose xlink:href carries a javascript: URL slip past the markup filter that Highcharts applies to href and s
EUVD-2026-112308
GHSA-grj7-r4jv-pw9j
NVD
CVE.org
Exploit-DB