Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft point data with __proto__/constructor keys
-
DeliveryApplication JSON.parses untrusted dataset
-
ExploitsetData builds column IDs from keys
-
ExecutionInteger-indexed writes reach Object.prototype
-
ImpactPage-wide pollution disrupts rendering or alters app logic
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 application feed attacker-controlled point data into a Highcharts series (e.g. a column series via setData or the data option) on versions 13.0.0-13.0.2, and that the data was produced by JSON.parse - this is essential because '__proto__' and 'constructor' survive JSON.parse as own enumerable keys, whereas in an object literal they would change the prototype instead and not trigger the flaw. No user interaction is needed beyond rendering the chart. Limiting factors that reduce realistic risk: the attacker must control the chart's data source (not inherent in Highcharts itself); only integer-indexed properties can be set this way (named properties cannot be reached); and the severity of any consequence beyond disrupted rendering and polluted for-in enumeration depends entirely on whether the consuming application's own code trusts prototype-inherited or out-of-range values. |
| Impact | This is a genuine but context-dependent client-side prototype pollution flaw (CWE-1321), not a drop-everything emergency. The input CVSS 4.0 vector scores it 7.2 (high) with AV:N/AC:L/AT:N/PR:L/UI:N and vulnerable-system VI:H/VA:H, VC:L - i.e. the severity is driven by integrity and availability of the rendering context, with only low confidentiality impact. No EPSS score and no CISA KEV status were provided, so there is no signal of widespread or active exploitation; vuln.today assigns a 'this_week' priority (not act_now/emergency), which matches a serious-but-not-critical posture. A public PoC reference exists (the vendor's jsfiddle live demo plus QUnit regression tests committed in the fix PR), but the input does not confirm it as a weaponized, working exploit, so this should be treated as 'a public PoC reference exists; it is not verified as working exploit code,' distinct from active exploitation. A key nuance: the given vector uses PR:L, but the real gate is not authentication to Highcharts - it is whether the application feeds attacker-controlled point data into the chart; in deployments that plot untrusted user- or API-supplied JSON, no privileges are effectively required. The impact ceiling is also application-dependent: the advisory explicitly says 'consequences beyond disruption depend on the consuming application,' so the baseline guaranteed effect is page-wide prototype pollution causing disrupted rendering or altered branching, with escalation possible only where downstream code trusts the polluted values. Note also an affected-range inconsistency across sources (see confidence_notes) that should be verified before scoping. |
| Exploit ScenarioDerived | An attacker who can influence the data a web application plots - for example a user-submitted dataset or an upstream API feeding chart series - crafts JSON containing '__proto__' or 'constructor' keys. When the app parses it with JSON.parse (which preserves those keys as own enumerable properties) and renders it in a Highcharts column series on versions 13.0.0-13.0.2, the write that builds the data columns lands integer-indexed properties on Object.prototype and the Object constructor, polluting every object on the page with no user interaction beyond rendering the chart. A public PoC reference exists (vendor jsfiddle demo and QUnit tests in the fix PR); it is not verified as working weaponized exploit code. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Prototype pollution in Highcharts JS 13.0.0 through 13.0.2 lets attacker-controlled series point data write integer-keyed properties onto Object.prototype and the Object constructor, which then surface in out-of-range index reads and for...in enumeration of every object on the page. No user interaction is required beyond rendering a chart built from those point objects, and the injected properties persist after the chart is constructed; the practical consequence runs from broken rendering to whatever the consuming application does with attacker-supplied inherited values. The issue is fixed in 13.1.0, is not listed in CISA KEV, and no working exploit code is confirmed - the vendor advisory does publish a live JSFiddle demo for testing, and the current priority label is this_week rather than an emergency call.
RemediationAI
Upgrade to Highcharts 13.1.0 or later - the vendor's npm example installs highcharts@13.1.1, and CDN users should switch to a versioned URL such as https://code.highcharts.com/13.1.1/highcharts.js rather than an unversioned build; the fix is documented in GHSA-gfvx-2c2g-38wq and shipped via PR 25321 (commit d3357705c8f348904441327e32f50ab528c3a205). If upgrading immediately is not possible, the advisory publishes a drop-in IIFE for affected versions 6.1.0 through 13.0.2 that must be loaded after Highcharts: it hooks Highcharts.Point.prototype.optionsToObject to strip own enumerable __proto__ and constructor keys from point options and hooks setNestedProperty to reject those segments in dotted keys, trading away any legitimate data key literally named __proto__ or constructor and requiring the shim to be re-verified after every Highcharts upgrade. Independent of either fix, stop passing untrusted JSON straight into series data: validate or strip __proto__, constructor and prototype keys from point objects server-side or before calling setData, since exploitation requires that the application's chart data source be attacker-controlled.
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
The flaw is a CWE-1321 prototype pollution in Highcharts' series column construction, the mechanism that builds the column-oriented data table backing each series. Instead of sanitizing point option keys, the library used them directly as data column IDs, so keys such as __proto__ and constructor resolved to shared objects and the write that creates a column landed on Object.prototype or on the Object constructor itself. The critical precondition is that the point data came through JSON.parse: that parser keeps __proto__ and constructor as own enumerable properties, whereas an object literal would instead reassign the prototype and never trigger the path. A second code path expands dotted keys through setNestedProperty, which walked into whatever a key segment resolved to (Object.prototype for __proto__), and a third used a truthiness test that accepted inherited members such as columns.toString, letting a write reach Object.prototype.toString. Only integer-indexed properties can be set this way - named properties are unreachable - but those integer keys are visible to any code that reads an out-of-range index or enumerates an object with for...in, which is why the assessed vector carries a scope change (S:C) and high integrity/availability impact: the chart's own rendering can fail, and unrelated application logic can take branches based on attacker-supplied values.
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
Data is network-deliverable and triggers on render (AC:L, UI:N); the gate is controlling chart data, not a Highcharts privilege, so PR:N; polluting global Object.prototype changes scope (S:C) with high integrity/availability impact and low confidentiality.
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 13.0.0 until 13.1.0, Highcharts builds series data columns by using point option keys directly as column IDs. Own enumerable __proto__ and constructor keys from parsed point objects can therefore direct integer-indexed writes to Object.prototype or the Object constructor. The inherited values affect reads and for-in enumeration across the page and can disrupt rendering or alter consuming application behavior without user interaction beyond rendering the chart. This issue is fixed in 13.1.0.
Technical POC Analysis
CWE-1321 (Prototype Pollution).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Highcharts JS versions 13.0.0-13.0.2 are affected by a prototype pollution vulnerability (CVE-2026-118249) that could allow an attacker to inject properties into core JavaScript objects when a chart is rendered, potentially compromising the integrity of any web application using these versions. While no active exploitation has been confirmed, the broad use of Highcharts in dashboards and customer-facing products means teams should prioritize remediation this week to prevent downstream logic manipulation or rendering failures.
No vendor-released patch identified at time of analysis. Interim mitigations include sanitizing all chart data inputs (especially series point properties) to reject integer-keyed properties, implementing Content Security Policy (CSP) to restrict script execution, and isolating chart rendering contexts where feasible; however, the primary remediation is to upgrade to version 13.1.0 as soon as possible.
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
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-112363
GHSA-gfvx-2c2g-38wq
NVD
CVE.org
Exploit-DB