{"id":"CVE-2026-91860","revision":null,"records":[{"revision":"e33f30017dc24756919e97807c360c07","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2026-91860","aliases":[],"title":"Prototype Pollution in Vaadin Charts and Component Base via Unfiltered Deep Merge","description":"A prototype pollution vulnerability exists in the deep merge helpers of Vaadin Charts and Vaadin Component Base. Merging an object the application does not control into a chart configuration or into a component's i18n property writes onto Object.prototype, making the injected properties visible to every object in the running application.\n\n\nUsers of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include:\n\nProduct version\nVaadin 23.0.0 - 23.6.13\nVaadin 24.0.0 - 24.9.20\nVaadin 24.10.0 - 24.10.9\nVaadin 25.0.0 - 25.1.11\nVaadin 25.2.0 - 25.2.6\n\nMitigation\nUpgrade to 23.6.14\nUpgrade to 24.9.21\nUpgrade to 24.10.10\nUpgrade to 25.1.12\nUpgrade to 25.2.7 or newer\n\nPlease 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.\n\nArtifacts\nMaven coordinates Vulnerable versions Fixed version\ncom.vaadin:vaadin 23.0.0 - 23.6.13 >=23.6.14\ncom.vaadin:vaadin 24.0.0 - 24.9.20 >=24.9.21\ncom.vaadin:vaadin 24.10.0 - 24.10.9 >=24.10.10\ncom.vaadin:vaadin 25.0.0 - 25.1.11 >=25.1.12\ncom.vaadin:vaadin 25.2.0 - 25.2.6 >=25.2.7\ncom.vaadin:vaadin-core 24.7.0 - 24.9.20 >=24.9.21\ncom.vaadin:vaadin-core 24.10.0 - 24.10.9 >=24.10.10\ncom.vaadin:vaadin-core 25.0.0 - 25.1.11 >=25.1.12\ncom.vaadin:vaadin-core 25.2.0 - 25.2.6 >=25.2.7\ncom.vaadin:vaadin-charts-flow 23.0.0 - 23.6.13 >=23.6.14\ncom.vaadin:vaadin-charts-flow 24.0.0 - 24.9.20 >=24.9.21\ncom.vaadin:vaadin-charts-flow 24.10.0 - 24.10.9 >=24.10.10\ncom.vaadin:vaadin-charts-flow 25.0.0 - 25.1.11 >=25.1.12\ncom.vaadin:vaadin-charts-flow 25.2.0 - 25.2.6 >=25.2.7\n\nnpm packages\nnpm package Vulnerable versions Fixed version\n@vaadin/charts 23.0.0 - 23.6.4 >=23.6.5\n@vaadin/charts 24.0.0 - 24.9.17 >=24.9.18\n@vaadin/charts 24.10.0 - 24.10.4 >=24.10.5\n@vaadin/charts 25.0.0 - 25.1.11 >=25.1.12\n@vaadin/charts 25.2.0 - 25.2.8 >=25.2.9\n@vaadin/component-base 24.7.0 - 24.9.17 >=24.9.18\n@vaadin/component-base 24.10.0 - 24.10.4 >=24.10.5\n@vaadin/component-base 25.0.0 - 25.1.11 >=25.1.12\n@vaadin/component-base 25.2.0 - 25.2.8 >=25.2.9","state":0,"publishedAt":"2026-09-30T13:13:05.996+00:00","modifiedAt":"2026-09-30T14:26:23.618+00:00","affected":[{"ecosystem":"https://repo.maven.apache.org/maven2","name":"com.vaadin:vaadin","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://repo.maven.apache.org/maven2\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"packageName\": \"com.vaadin:vaadin\",\n                    \"product\": \"vaadin\",\n                    \"repo\": \"https://github.com/vaadin/platform\",\n                    \"vendor\": \"vaadin\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"23.6.14\",\n                            \"status\": \"affected\",\n                            \"version\": \"23.0.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"24.9.21\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.0.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"24.10.10\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.10.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"25.1.12\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.0.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"25.2.7\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.2.0\",\n                            \"versionType\": \"maven\"\n                        }\n                    ]\n                }"},{"ecosystem":"https://repo.maven.apache.org/maven2","name":"com.vaadin:vaadin-core","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://repo.maven.apache.org/maven2\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"packageName\": \"com.vaadin:vaadin-core\",\n                    \"product\": \"vaadin-core\",\n                    \"repo\": \"https://github.com/vaadin/platform\",\n                    \"vendor\": \"vaadin\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"24.9.21\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.7.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"24.10.10\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.10.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"25.1.12\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.0.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"25.2.7\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.2.0\",\n                            \"versionType\": \"maven\"\n                        }\n                    ]\n                }"},{"ecosystem":"https://repo.maven.apache.org/maven2","name":"com.vaadin:vaadin-charts-flow","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://repo.maven.apache.org/maven2\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"packageName\": \"com.vaadin:vaadin-charts-flow\",\n                    \"product\": \"vaadin-charts-flow\",\n                    \"repo\": \"https://github.com/vaadin/flow-components\",\n                    \"vendor\": \"vaadin\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"23.6.14\",\n                            \"status\": \"affected\",\n                            \"version\": \"23.0.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"24.9.21\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.0.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"24.10.10\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.10.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"25.1.12\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.0.0\",\n                            \"versionType\": \"maven\"\n                        },\n                        {\n                            \"lessThan\": \"25.2.7\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.2.0\",\n                            \"versionType\": \"maven\"\n                        }\n                    ]\n                }"},{"ecosystem":"https://registry.npmjs.org","name":"@vaadin/charts","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://registry.npmjs.org\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"packageName\": \"@vaadin/charts\",\n                    \"product\": \"@vaadin/charts\",\n                    \"repo\": \"https://github.com/vaadin/web-components\",\n                    \"vendor\": \"vaadin\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"23.6.5\",\n                            \"status\": \"affected\",\n                            \"version\": \"23.0.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"24.9.18\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.0.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"24.10.5\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.10.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"25.1.12\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.0.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"25.2.9\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.2.0\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"},{"ecosystem":"https://registry.npmjs.org","name":"@vaadin/component-base","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"collectionURL\": \"https://registry.npmjs.org\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"packageName\": \"@vaadin/component-base\",\n                    \"product\": \"@vaadin/component-base\",\n                    \"repo\": \"https://github.com/vaadin/web-components\",\n                    \"vendor\": \"vaadin\",\n                    \"versions\": [\n                        {\n                            \"lessThan\": \"24.9.18\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.7.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"24.10.5\",\n                            \"status\": \"affected\",\n                            \"version\": \"24.10.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"25.1.12\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.0.0\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"lessThan\": \"25.2.9\",\n                            \"status\": \"affected\",\n                            \"version\": \"25.2.0\",\n                            \"versionType\": \"semver\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N","score":6.3,"severity":"MEDIUM"}],"references":["https://vaadin.com/security/cve-2026-91860","https://github.com/vaadin/web-components/pull/12483","https://github.com/vaadin/web-components/pull/12492","https://github.com/vaadin/web-components/pull/12493","https://github.com/vaadin/web-components/pull/12494","https://github.com/vaadin/web-components/pull/12496","https://github.com/vaadin/web-components/pull/12559"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-91860","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-91860","identifiers":["CVE-2026-91860"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-12T03:56:46.1287087+00:00","complete":true,"records":1779,"lastAttemptAt":"2026-11-12T03:56:46.1287087+00:00","lastSuccessAt":"2026-11-12T03:56:46.266109+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:46.2661097+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-64752486c567b55b31fb0d7225f5222bcd0019564ac0ac5f0649e242c7b19299-beddb039e9e8d22605e2eaa29616069a8dbcaa39d8913522266b856ccc773385","complete":true,"records":424562,"lastAttemptAt":"2026-11-12T03:56:45.0720206+00:00","lastSuccessAt":"2026-11-12T03:56:45.0520395+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:45.0720206+00:00","snapshotPublishedAt":"2026-11-12T03:29:06+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-83f01e9b693347759bbcba1498652358","complete":false,"records":13760,"lastAttemptAt":"2026-11-12T04:06:30.4778921+00:00","lastSuccessAt":"2026-11-12T04:06:30.473+00:00","error":"350 identifier lookups failed; latest failures include AccessDenied (HTTP 403). Other identifiers were checked independently.","lastVerifiedAt":"2026-11-12T04:06:30.473+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13463,"expectedIdentifiers":13813,"failedIdentifiers":350},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-12T03:56:46.1287087+00:00","complete":true,"records":1097,"lastAttemptAt":"2026-11-12T03:56:46.1287087+00:00","lastSuccessAt":"2026-11-12T03:56:46.2668013+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:46.2668014+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-52451a58cbcb4287967102045f86ce70","complete":true,"records":13760,"lastAttemptAt":"2026-11-12T03:56:47.5828253+00:00","lastSuccessAt":"2026-11-12T03:56:47.579+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:47.579+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13813,"expectedIdentifiers":13813,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-3562b6c78fd1bd0f0b55daf66a0926ae24f65e462df7f6d928caad458fc696bf","complete":true,"records":9947,"lastAttemptAt":"2026-11-12T03:56:45.7079161+00:00","lastSuccessAt":"2026-11-11T04:27:43.6877707+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:45.7079161+00:00","snapshotPublishedAt":"2026-11-11T03:32:46+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-456002455e0ab94bb92c95476d4e6d175c104cd594749982afd96c893728ecbc","complete":true,"records":2010,"lastAttemptAt":"2026-11-12T03:56:45.2248127+00:00","lastSuccessAt":"2026-11-11T02:36:58.1276999+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:45.2248127+00:00","snapshotPublishedAt":"2026-11-11T01:17:51+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-baa8362b4daf9e5f39d5563775a55935e7b442c0735d33274a921579ce4a0d66","complete":true,"records":3093,"lastAttemptAt":"2026-11-12T03:56:46.0887439+00:00","lastSuccessAt":"2026-11-11T13:00:02.5446881+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:46.0887439+00:00","snapshotPublishedAt":"2026-11-11T12:47:47+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-685fe7fb2b690656c910a1ea42a9d294e8353311ac8ecfa691a9b0ff1b328804","complete":true,"records":231695,"lastAttemptAt":"2026-11-12T03:56:45.6007038+00:00","lastSuccessAt":"2026-11-11T21:58:47.7265713+00:00","error":null,"lastVerifiedAt":"2026-11-12T03:56:45.6007038+00:00","snapshotPublishedAt":"2026-11-11T21:48:35+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}