Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply attacker-controlled series.keys and point data
-
ExploitChart rendering follows dotted key path
-
ExecutionUnfiltered __proto__/constructor segment writes Object.prototype
-
ImpactPolluted properties affect all page JavaScript
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 that the consuming application allows attacker-controlled input to populate BOTH the series.keys array (with a dot-separated path such as '__proto__.polluted' or 'constructor.prototype.alsoPolluted') and the matching per-point data values; this is the exact prerequisite, not a generic 'configuration'. Affected versions are 6.1.0 up to (not including) 11.4.9, 12.0.0 up to (not including) 12.6.1, and 13.0.0 through 13.0.2. Key limiting factors defenders should weigh: no user interaction is needed beyond rendering the chart, but series.keys is normally a static developer-defined config, so applications that never route untrusted data into keys/point data are not exploitable; and the pollution is inert until other page code reads the injected property, so concrete harm depends on the surrounding application. The complete fix is upgrading to 11.4.9, 12.6.1, or 13.1.0 (e.g. npm install highcharts@13.1.1 or the versioned CDN URL); the vendor also publishes a drop-in IIFE workaround that reimplements setNestedProperty to reject '__proto__'/'constructor' segments for versions 6.1.0-13.0.2. |
| Impact | Signals point to a moderate, context-dependent priority rather than an emergency. The provided CVSS 4.0 vector scores 7.2 (High) with AV:N/AC:L/AT:N/PR:L/UI:N and vulnerable-system impacts VC:L/VI:H/VA:H, and the vuln.today decision label is 'this_week' (not act_now/emergency). No CISA KEV listing is present, so this is 'no confirmed active exploitation'; no EPSS score was supplied, so exploitation probability cannot be quantified from the input. A public PoC reference exists (a jsfiddle live demo and a committed unit test that pollutes Object.prototype via '__proto__.polluted' and 'constructor.prototype.alsoPolluted'); it is not verified as working weaponized exploit code. The most important nuance, stated plainly, is a gap between raw severity and realistic exploitability: the CVSS vector reads network-reachable and only low-privilege, but the advisory's actual precondition is that the hosting application must feed attacker-controlled values into series.keys AND the matching point data - which is not how series.keys is normally used (it is typically a developer-defined static array). Where that untrusted data flow does not exist, real-world risk is low despite the High score. The advisory also notes injected properties are inert until other page code reads them, so downstream confidentiality/integrity/availability impact is application-dependent and not guaranteed by the pollution itself. |
| Exploit ScenarioDerived | A web application renders a Highcharts chart using data where both series.keys and the point values are derived from untrusted input (e.g. a chart config reflected from a URL parameter, saved dashboard, or API response). The attacker supplies a key path such as '__proto__.polluted' with matching point data, so that merely rendering the chart writes an arbitrary property onto Object.prototype, visible to all JavaScript on the page. A public PoC reference exists (jsfiddle demo and the fix's regression test); it is not verified as working exploit code, and realistic impact then depends on what other code on the page does with the polluted property. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
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 13.0.2) lets an attacker who controls a chart's series.keys array and the matching per-point data write arbitrary named properties onto Object.prototype using dot-separated paths such as '__proto__.polluted' or 'constructor.prototype.alsoPolluted'. No user interaction is required beyond rendering the chart, and because the injected properties are visible to all JavaScript on the page rather than only to the chart - reflected as scope-changed (S:C) in both the vendor CVSS 4.0 vector and the independently assessed CVSS 3.1 vector - concrete harm depends on what other page code later reads. Exploitation is contextual: series.keys is normally a static developer-defined configuration, so only applications that route untrusted input into both keys and point data are exposed, and the advisory links a live JSFiddle demonstration of the pollution (a public PoC reference exists; it is not verified as working exploit code). There is no CISA KEV entry and no confirmed active exploitation; the vuln.today decision label is 'this_week', a moderate context-dependent priority rather than an emergency.
RemediationAI
Vendor-released patch: 11.4.9, 12.6.1 and 13.1.0 - upgrade the highcharts package to the fixed release for your branch, for example npm install highcharts@13.1.1 as shown in the advisory, or switch CDN script tags to the versioned URL https://code.highcharts.com/13.1.1/highcharts.js, then rebuild any bundled or vendored copies (advisory: https://github.com/highcharts/highcharts/security/advisories/GHSA-rmqc-xvr3-v46c, fix commit fd4ee8140732618bbe71295aba55398fb1f8fa9e via PR https://github.com/highcharts/highcharts/pull/25313). For versions 6.1.0 through 13.0.2 that cannot be upgraded immediately, the vendor publishes a drop-in IIFE workaround that must be executed after Highcharts is loaded; it replaces Highcharts.Point.prototype.setNestedProperty with a version that refuses any path segment equal to '__proto__' or 'constructor', using the same rejection semantics as the upstream patch (snippet and a live JSFiddle test page are in the advisory). Trade-offs to plan for: the monkey-patch has to be injected into every page, bundle and iframe bundle that loads Highcharts, it must be re-verified after each library update, and it silently drops any legitimate key path containing those segment names. Independently of patching, exposure is limited to deployments where untrusted input can populate both series.keys and the matching point data, so applications that hard-code keys and never let user-controlled data reach that configuration are not exploitable and can schedule the upgrade on the 'this_week' cadence.
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 charts as SVG and lets series points be shaped with a series.keys array, where each entry is a dot-separated path that maps a positional value in the point data array onto a (possibly nested) property of the point object. The affected implementation, Point.setNestedProperty in ts/Core/Series/Point.ts, splits that path on '.' and walks it with a reduce loop that creates intermediate objects as needed, but it never filters individual segments for prototype-manipulating names. A path containing __proto__ or constructor therefore traverses into Object.prototype and assigns attacker-chosen properties there, a classic CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes / prototype pollution) root cause. Because Object.prototype is shared by every object in the page's JavaScript realm, the pollution escapes the chart instance - hence the scope-changed CVSS rating - although the injected properties are inert until other code reads them. The upstream fix in PR #25313 adds a guard that rejects any nested key path containing a '__proto__' or 'constructor' segment, returning the object unchanged for that path, with unit tests asserting that {}.polluted and {}.alsoPolluted stay undefined while unrelated keys in the same configuration (e.g. 'y') still apply. The exact trigger surface is confirmed by the advisory and test diff; nothing in the supplied evidence indicates races, timing, or memory-corruption mechanics.
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:L/VI:H/VA:H/SC:L/SI:L/SA:L
PR:L reflects the required data-flow precondition of attacker-controlled series.keys; polluting shared Object.prototype is a cross-component change (S:C) with high integrity impact, while C/A are low and application-dependent.
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 6.1.0 until 11.4.9, 12.6.1, and 3.1.0, Highcharts follows dot-separated series.keys paths without filtering each segment. An attacker who controls series.keys and matching point data can use a path through __proto__ to assign arbitrary named properties to Object.prototype. Those properties are visible to all JavaScript in the page, and no user interaction is required beyond rendering the chart. This issue is fixed in 11.4.9, 12.6.1, and 3.1.0.
Technical POC Analysis
CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes, i.e.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity prototype pollution flaw in Highcharts (CVE-2026-118250) affects versions used across our web applications, potentially enabling cross-site scripting and data theft if untrusted input reaches chart configuration. With no vendor patch available, any application that passes user-supplied data to Highcharts is at risk, and leadership should prioritize identifying and mitigating exposed instances to prevent broader compromise.
Enforce strict input validation and sanitization on all data passed to Highcharts; implement a Content Security Policy to mitigate script execution; isolate chart rendering in a sandboxed iframe; restrict dynamic configuration of series.keys to static developer-defined values.
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 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-112364
GHSA-rmqc-xvr3-v46c
NVD
CVE.org
Exploit-DB