Vaadin Charts: Cross-site scripting and prototype pollution in bundled Highcharts
Summary
Vaadin Charts bundles a pinned Highcharts version that contains several flaws reachable through the chart configuration. If an application passes attacker-controlled data into chart options, text options or updateConfiguration(), an attacker can run script in the browser of a user who views or interacts with the chart, or write to Object.prototype. The vulnerabilities cannot be fixed by upgrading Highcharts in the application itself.
Affected
- Vaadin 22.0.0 to 23.6.15
- Vaadin 24.0.0 to 24.4.23
- Vaadin 24.5.0 to 24.7.15
- Vaadin 24.8.0 to 24.9.22
- Vaadin 24.10.0 to 24.10.10
- Vaadin 25.0.0 to 25.2.9
- Vaadin 25.3.0
- Maven: com.vaadin:vaadin, com.vaadin:vaadin-charts-flow, com.vaadin:vaadin-charts-flow-svg-generator
- npm: @vaadin/charts (see Vaadin advisory for exact ranges)
Fixed in
- Vaadin 23.6.16
- Vaadin 24.4.24
- Vaadin 24.7.16
- Vaadin 24.9.23
- Vaadin 24.10.11
- Vaadin 25.2.10
- Vaadin 25.3.1 or newer
- npm @vaadin/charts: 23.6.7, 24.4.19, 24.7.13, 24.9.19, 24.10.7, 25.2.14 or newer (per package branch)
Versions 10-13 and 15-22 are no longer supported.
Workaround
- Do not pass data the application does not control to the chart configuration, including additionalOptions, updateConfiguration(), setKeys(), addKey(), Credits.setUnsafeHref() and text options that accept markup.
- Charts whose configuration the application builds itself are not affected.
- Highsoft provides workaround scripts in its advisories; the fixed Vaadin versions apply them automatically.
Exploitation
- CISA SSVC: exploitation none, automatable no, technical impact total.
- No public proof of concept or evidence of exploitation found at the time of research.
Our recommendation
- Upgrade Vaadin applications to the fixed versions listed above, as the Highcharts version itself stays the same.
- Inventory applications that use Vaadin Charts and identify which feed user-controlled data into chart configurations.
- Prioritise internet-facing applications and remove or sanitise untrusted input in chart options until patched.
- Monitor for suspicious script activity in affected applications.
Public exploits
PoC-in-GitHub, Metasploit and Exploit-DB list nothing for this CVE.
Research sources
- Vaadin security advisory CVE-2026-107588 vaadin.com
- Highcharts advisory GHSA-35rr-xwfh-x789 (breadcrumbs.style) github.com
- Highcharts advisory GHSA-5793-x2q3-c3q7 (credits.href javascript: URL) github.com
- Highcharts advisory GHSA-65hg-cf3f-5m39 github.com
- Highcharts advisory GHSA-gfvx-2c2g-38wq github.com
- Highcharts advisory GHSA-mw4f-gj5x-6xr4 github.com
- Highcharts advisory GHSA-rmqc-xvr3-v46c github.com
Researched and written up in English and German by an AI (Claude by Anthropic) based on NVD, CISA, EPSS and the sources listed. The vendor information is authoritative. Researched on 1 Nov 2026, 12:11.
Original description (NVD)
Vaadin Charts renders charts with the Highcharts library and pins an exact version of it, 9.2.2 in Vaadin 22 to 24 and 12.2.0 in Vaadin 25, so an application cannot remove these vulnerabilities by upgrading Highcharts on its own. Highsoft disclosed several vulnerabilities in that library that are reachable through the chart configuration: writes to Object.prototype through dotted series.keys paths, and cross-site scripting through credits.href, through breadcrumbs.style, through HTML text parsing while printing, and through xlink:href attributes in exported charts. An application is affected where data an attacker controls reaches the chart configuration, for example through additionalOptions, through updateConfiguration(), or through text options that accept markup. The fixed Vaadin versions apply Highsoft's recommended workarounds to the bundled Highcharts when it loads, and keep the same Highcharts version. Users of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include: Product version Vaadin 22.0.0 - 23.6.15 Vaadin 24.0.0 - 24.4.23 Vaadin 24.5.0 - 24.7.15 Vaadin 24.8.0 - 24.9.22 Vaadin 24.10.0 - 24.10.10 Vaadin 25.0.0 - 25.2.9 Vaadin 25.3.0 Mitigation Upgrade to 23.6.16 Upgrade to 24.4.24 Upgrade to 24.7.16 Upgrade to 24.9.23 Upgrade to 24.10.11 Upgrade to 25.2.10 Upgrade to 25.3.1 or newer Please note that Vaadin versions 10-13 and 15-22 are no longer supported and you should update either to the latest 23, 24, 25 version. Artifacts Maven coordinates / Vulnerable versions / Fixed version com.vaadin:vaadin / 22.0.0 - 23.6.15 / >=23.6.16 com.vaadin:vaadin / 24.0.0 - 24.4.23 / >=24.4.24 com.vaadin:vaadin / 24.5.0 - 24.7.15 / >=24.7.16 com.vaadin:vaadin / 24.8.0 - 24.9.22 / >=24.9.23 com.vaadin:vaadin / 24.10.0 - 24.10.10 / >=24.10.11 com.vaadin:vaadin / 25.0.0 - 25.0.13 / >=25.2.10 com.vaadin:vaadin / 25.1.0 - 25.1.13 / >=25.2.10 com.vaadin:vaadin / 25.2.0 - 25.2.9 / >=25.2.10 com.vaadin:vaadin / 25.3.0 / >=25.3.1 com.vaadin:vaadin-charts-flow / 22.0.0 - 23.6.15 / >=23.6.16 com.vaadin:vaadin-charts-flow / 24.0.0 - 24.4.22 / >=24.4.24 com.vaadin:vaadin-charts-flow / 24.5.0 - 24.7.14 / >=24.7.15 com.vaadin:vaadin-charts-flow / 24.8.0 - 24.9.22 / >=24.9.23 com.vaadin:vaadin-charts-flow / 24.10.0 - 24.10.10 / >=24.10.11 com.vaadin:vaadin-charts-flow / 25.0.0 - 25.0.13 / >=25.2.10 com.vaadin:vaadin-charts-flow / 25.1.0 - 25.1.13 / >=25.2.10 com.vaadin:vaadin-charts-flow / 25.2.0 - 25.2.9 / >=25.2.10 com.vaadin:vaadin-charts-flow / 25.3.0 / >=25.3.1 com.vaadin:vaadin-charts-flow-svg-generator / 21.0.0 - 23.6.15 / >=23.6.16 com.vaadin:vaadin-charts-flow-svg-generator / 24.0.0 - 24.4.22 / >=24.4.24 com.vaadin:vaadin-charts-flow-svg-generator / 24.5.0 - 24.7.14 / >=24.7.15 com.vaadin:vaadin-charts-flow-svg-generator / 24.8.0 - 24.9.22 / >=24.9.23 com.vaadin:vaadin-charts-flow-svg-generator / 24.10.0 - 24.10.10 / >=24.10.11 com.vaadin:vaadin-charts-flow-svg-generator / 25.0.0 - 25.0.13 / >=25.2.10 com.vaadin:vaadin-charts-flow-svg-generator / 25.1.0 - 25.1.13 / >=25.2.10 com.vaadin:vaadin-charts-flow-svg-generator / 25.2.0 - 25.2.9 / >=25.2.10 com.vaadin:vaadin-charts-flow-svg-generator / 25.3.0 / >=25.3.1 npm packages npm package / Vulnerable versions / Fixed version @vaadin/charts / 22.0.0 - 23.6.6 / >=23.6.7 @vaadin/charts / 24.0.0 - 24.4.18 / >=24.4.19 @vaadin/charts / 24.5.0 - 24.7.12 / >=24.7.13 @vaadin/charts / 24.8.0 - 24.9.18 / >=24.9.19 @vaadin/charts / 24.10.0 - 24.10.6 / >=24.10.7 @vaadin/charts / 25.0.0 - 25.0.13 / >=25.2.14 @vaadin/charts / 25.1.0 - 25.1.14 / >=25.2.14 @vaadin/charts / 25.2.0 - 25.2.13 / >=25.2.14 @vaadin/charts / 25.3.0 / >=25.3.1
NVD references (25)
- https://github.com/highcharts/highcharts/security/advisories/GHSA-35rr-xwfh-x789
- https://github.com/highcharts/highcharts/security/advisories/GHSA-5793-x2q3-c3q7
- https://github.com/highcharts/highcharts/security/advisories/GHSA-65hg-cf3f-5m39
- https://github.com/highcharts/highcharts/security/advisories/GHSA-gfvx-2c2g-38wq
- https://github.com/highcharts/highcharts/security/advisories/GHSA-mw4f-gj5x-6xr4
- https://github.com/highcharts/highcharts/security/advisories/GHSA-rmqc-xvr3-v46c
- https://github.com/vaadin/flow-components/pull/10283
- https://github.com/vaadin/flow-components/pull/10284
- https://github.com/vaadin/flow-components/pull/10285
- https://github.com/vaadin/flow-components/pull/10290
- https://github.com/vaadin/flow-components/pull/10291
- https://github.com/vaadin/flow-components/pull/10292
- https://github.com/vaadin/flow-components/pull/10293
- https://github.com/vaadin/flow-components/pull/10299
- https://github.com/vaadin/flow-components/pull/10300
- https://github.com/vaadin/web-components/pull/12886
- https://github.com/vaadin/web-components/pull/12887
- https://github.com/vaadin/web-components/pull/12897
- https://github.com/vaadin/web-components/pull/12898
- https://github.com/vaadin/web-components/pull/12899
- https://github.com/vaadin/web-components/pull/12900
- https://github.com/vaadin/web-components/pull/12901
- https://github.com/vaadin/web-components/pull/12918
- https://github.com/vaadin/web-components/pull/12919
- https://vaadin.com/security/cve-2026-107588
Sources
The tracker combines official, freely usable data sources – updated continuously:
- NVD (NIST) – CVEs, rating (CVSS), affected products
- CISA KEV – vulnerabilities confirmed by CISA as actively exploited
- CISA Vulnrichment – CISA assessment (SSVC) in the official CVE record
- FIRST EPSS – probability of exploitation
- Microsoft MSRC – Patch Tuesday: vulnerabilities, severity, updates
- PoC-in-GitHub – public proof-of-concept repositories
- Metasploit (Rapid7) – modules of the Metasploit Framework
- Exploit-DB (OffSec) – archive of public exploits (links only)
- Patch days: official vendor pages (linked per vendor) (Vendor patch days)
This product uses data from the NVD API but is not endorsed or certified by the NVD. EPSS data © FIRST.org.
Affected? We can help.
We check whether your systems are affected, install updates and close the gap – continuously with the System Health Checker if you wish.
