Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply __proto__ table id via dataPool config
-
DeliveryLoad board with sync enabled
-
ExploitSync registration resolves id to Object.prototype
-
ExecutionEnumerable listener property written to prototype
-
ImpactLasting sync state throws, breaks extremes synchronization
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires three concrete conditions, all satisfiable through the same untrusted configuration: (1) attacker-controlled input must reach the Highcharts Dashboards configuration - specifically a dataPool connector whose DataTable id is set to '__proto__' (or 'constructor'); (2) a component sync that keeps lasting states, such as 'highlight' or 'extremes', must be enabled on a component using that table; and (3) the sync 'group' option can append an attacker-chosen suffix to the fixed state-prefix property name. Limiting factors that reduce real-world risk: the application must trust and pass untrusted data into the board configuration (not a default/standalone deployment behavior), the vector carries PR:L so some privilege/config control is required, affected versions are 1.0.0 through 4.2.1 only, and the injected property is inert until other page code reads or enumerates it - so downstream impact depends on the consuming application rather than being automatic. |
| Impact | Signals are consistent and point to a genuine but low-to-moderate priority. The provided CVSS 4.0 base score is 5.3 (medium) with AV:N/AC:L/AT:N/PR:L/UI:N and only Low integrity/availability impact, no confidentiality impact. The vendor priority Decision label is 'this_month' - not act_now or emergency - which matches a standard-cycle patch rather than an urgent one. No EPSS score and no KEV status were provided in the input, so there is no evidence of active exploitation; this is not a confirmed in-the-wild issue. A public PoC reference exists (a jsfiddle live demo/testing link in the advisory) but it is not verified as working exploit code and primarily demonstrates the pollution and workaround. The decisive limiter is the precondition: exploitation requires attacker-controlled dashboard configuration to reach Highcharts Dashboards (a malicious dataPool connector table id of __proto__) plus an enabled component sync - this is a configuration-trust/design flaw, not remote-unauthenticated exploitation of a default deployment, consistent with PR:L in the vector. Real-world impact is modest: it writes one enumerable property onto Object.prototype and can throw and break lasting sync states such as extremes (a self-DoS of charting features); any further consequence is inert until other page code enumerates the property, so it depends on the consuming application. Net: real and worth patching on a normal cycle, not a high-urgency emergency despite the 'prototype pollution' label. |
| Exploit ScenarioDerived | An attacker who can influence the Highcharts Dashboards configuration - for example an application that feeds untrusted data into dashboard/dataPool config - supplies a connector with a DataTable id of '__proto__'. When a component with an enabled sync such as 'highlight' or 'extremes' loads the board, sync registration resolves that id to Object.prototype and creates an enumerable listener-array property there, visible on every object and breaking lasting sync states. A public PoC/demo reference (jsfiddle) exists but is not verified as working exploit code; no user interaction is required beyond loading the board (CVSS AV:N/AC:L/UI:N, but PR:L requires control over the configuration). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Prototype pollution in Highcharts Dashboards 1.0.0 through 4.2.1 lets an attacker who controls dashboard configuration supply a DataTable id of __proto__ or constructor and, with an enabled stateful sync such as highlight or extremes, create an enumerable property on Object.prototype whose name suffix is influenced by the sync group option. The injected property is normally inert but can break sync bookkeeping, cause exceptions that stop features like extremes synchronization, and affect any page code that reads or enumerates it; exploitation requires untrusted data to reach the Dashboards dataPool and sync configuration and no user interaction beyond loading the board. The issue is fixed in 4.2.2; no confirmed active exploitation or CISA KEV entry is reported, and the advisory's public live demo and testing reference is not verified as working exploit code.
RemediationAI
Upgrade @highcharts/dashboards to 4.2.2 or later; package metadata lists vulnerable >= 1.0.0 and <= 4.2.1 with the fix in 4.2.2, while the advisory's installation examples use npm install @highcharts/dashboards@4.2.3 and the CDN URL https://code.highcharts.com/dashboards/4.2.3/dashboards.js. If upgrading is not immediately possible, apply the advisory's drop-in IIFE workaround after Highcharts Dashboards loads for affected versions 1.0.0 through 4.2.1; it converts listenerMap and stateMap to null-prototype objects and rejects __proto__ and constructor table IDs, with such IDs becoming auto-generated unique keys, so run it before untrusted dashboard configuration is processed. Advisory: https://github.com/highcharts/highcharts/security/advisories/GHSA-jqgh-w3cc-7jqw
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 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 is a JavaScript and SVG dashboarding layer built on Highcharts, and the flaw sits in the DataCursor and DataTable bookkeeping used by dataPool connectors. DataCursor keeps listener and state maps as plain objects keyed by DataTable id, so a table id of __proto__ resolves to Object.prototype when a sync registers listeners and writes a property named from the library's fixed state prefix plus the attacker-influenced sync group suffix; that property is enumerable and visible on every object, and emitting a lasting state for the table id throws. This is CWE-1321 prototype pollution. The source fix in commit ade5a41a700212f09133223ca990a3737d1d9ec6 switches listenerMap and stateMap to Object.create(null) and rejects __proto__ and constructor IDs in DataTableCore, replacing them with auto-generated unique keys. The trigger requires untrusted dashboard configuration and an enabled component sync, as described in the advisory; no other trigger is stated.
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:N/VI:L/VA:L/SC:L/SI:L/SA:L
Requires attacker control over dashboard configuration so PR:L; polluting shared Object.prototype crosses into other components (S:C); only low integrity/availability (feature DoS), no confidentiality impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Highcharts JS is a JavaScript charting library based on SVG. From 1.0.0 until 4.2.2, Highcharts Dashboards stores DataCursor listener and state maps in plain objects keyed by DataTable ID. A __proto__ table ID supplied through dataPool connector configuration resolves to Object.prototype, and sync registration creates an enumerable property there whose suffix can be influenced through the sync group option. The property is visible on every object, and lasting sync states can throw and stop features such as extremes synchronization. Exploitation requires untrusted dashboard configuration and an enabled component sync, but no user interaction beyond loading the board. This issue is fixed in 4.2.2.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-112302
GHSA-jqgh-w3cc-7jqw
NVD
CVE.org
Exploit-DB