Skip to main content

Highcharts JS CVE-2026-118250

| EUVDEUVD-2026-112364 HIGH
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2026-10-28 GitHub_M GHSA-rmqc-xvr3-v46c
7.2
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Supply attacker-controlled series.keys and point data
  2. Exploit
    Chart rendering follows dotted key path
  3. Execution
    Unfiltered __proto__/constructor segment writes Object.prototype
  4. Impact
    Polluted 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

highcharts 13.0.0, < 13.1.0
highcharts 12.0.0, < 12.6.1
highcharts 6.1.0, < 11.4.9

Affected Packages

npm highcharts fix: 11.4.9, 12.6.1, 13.1.0

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

Vendor (GitHub_M) PRIMARY 7.2 HIGH
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
vuln.today AI 9.1 CRITICAL

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:L/SC:L/SI:L/SA:L

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
Low

Lifecycle Timeline

2
Patch available
Oct 28, 2026 - 19:03 EUVD
CVE Published
Oct 28, 2026 - 17:59 cve.org
HIGH 7.2

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

Prevalence
High
very popular JavaScript charting library used across many web apps
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2026-118254 HIGH POC
8.6 Oct 28

DOM-based cross-site scripting in Highcharts Grid (@highcharts/grid-lite and @highcharts/grid-pro) versions 2.0.0 throug

CVE-2026-118245 HIGH
8.6 Oct 28

Cross-site scripting in Highcharts Dashboards (npm @highcharts/dashboards) from 1.0.0 through 4.2.1 lets an attacker who

CVE-2026-118242 HIGH
8.5 Oct 28

Event-handler attribute injection in Highcharts Grid's custom SVG icon definitions (npm packages @highcharts/grid-lite a

CVE-2026-116797 HIGH
8.5 Oct 28

Cross-site scripting in Highcharts Grid Pro 2.0.0 through 3.1.0 lets an attacker who can influence column configuration

CVE-2026-118255 HIGH POC
8.4 Oct 28

A DOM-based cross-site scripting flaw in Highcharts Grid lets an attacker who can influence the Grid configuration set c

CVE-2026-118253 HIGH
8.4 Oct 28

DOM-based cross-site scripting in Highcharts Dashboards edit mode lets markup placed in the fullscreen language labels e

CVE-2026-118252 HIGH
8.4 Oct 28

Improper neutralization of HTML in the Highcharts Dashboards edit-mode sidebar lets markup supplied through the Dashboar

CVE-2026-118251 HIGH
8.4 Oct 28

Cross-site scripting in Highcharts JS (Core, plus the Stock, Maps and Gantt builds shipped from the same package) affect

CVE-2026-118246 HIGH
8.4 Oct 28

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

CVE-2026-118249 HIGH
7.2 Oct 28

Prototype pollution in Highcharts JS 13.0.0 through 13.0.2 lets attacker-controlled series point data write integer-keye

CVE-2026-118244 HIGH
7.2 Oct 28

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

CVE-2026-116796 HIGH
7.2 Oct 28

SVG anchors whose xlink:href carries a javascript: URL slip past the markup filter that Highcharts applies to href and s

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy