# CVE-2026-110737: Push Endpoint Returns Permissive CORS Headers

Status: published. Published: 2026-10-27. Updated: 2026-11-04.

The push endpoint of a Vaadin application that uses server push reflects the request Origin into the Access-Control-Allow-Origin response header and allows credentials, because Flow configures Atmosphere with DROP_ACCESS_CONTROL_ALLOW_ORIGIN_HEADER set to false and its CorsInterceptor then echoes whatever Origin the request carries. A page on any origin can therefore make a cross origin request to that endpoint with the user's cookies and read the response, although reading anything useful also requires the push identifier of that session. Applications that do not use @Push are not affected, and neither is the WebSocket transport. The behaviour was introduced in January 2015 and is present in every Flow release and in Vaadin Framework from 7.1.0, which is when push was added.


Users of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include:

Product version
Vaadin 14.14.0 - 14.14.7
Vaadin 23.6.0 - 23.6.16
Vaadin 24.4.0 - 24.4.25
Vaadin 24.5.0 - 24.5.15
Vaadin 24.6.0 - 24.6.13
Vaadin 24.7.0 - 24.7.16
Vaadin 24.8.0 - 24.8.17
Vaadin 24.9.0 - 24.9.23
Vaadin 24.10.0 - 24.10.11
Vaadin 25.0.0 - 25.0.13
Vaadin 25.1.0 - 25.1.13
Vaadin 25.2.0 - 25.2.10
Vaadin 25.3.0 - 25.3.2
Vaadin Framework 7.1.0 - 7.7.54
Vaadin Framework 8.0.0 - 8.32.1

Mitigation
Upgrade to 14.14.8
Upgrade to 23.6.17
Upgrade to 24.4.26
Upgrade to 24.7.17
Upgrade to 24.7.17
Upgrade to 24.7.17
Upgrade to 24.9.24
Upgrade to 24.9.24
Upgrade to 24.10.12
Upgrade to 25.2.11
Upgrade to 25.2.11
Upgrade to 25.2.11
Upgrade to 25.3.3
Upgrade to 7.7.55
Upgrade to 8.32.2

Please note that Vaadin versions 10-13 and 15-22 are no longer supported and you should update either to the latest 14, 23, 24, 25 version.

Artifacts under com.vaadin
Maven coordinates / Vulnerable versions / Fixed version
vaadin / 14.14.0 - 14.14.7 / >=14.14.8
vaadin / 23.6.0 - 23.6.16 / >=23.6.17
vaadin / 24.4.0 - 24.4.25 / >=24.4.26
vaadin / 24.5.0 - 24.5.15 / >=24.7.17
vaadin / 24.6.0 - 24.6.13 / >=24.7.17
vaadin / 24.7.0 - 24.7.16 / >=24.7.17
vaadin / 24.8.0 - 24.8.17 / >=24.9.24
vaadin / 24.9.0 - 24.9.23 / >=24.9.24
vaadin / 24.10.0 - 24.10.11 / >=24.10.12
vaadin / 25.0.0 - 25.0.13 / >=25.2.11
vaadin / 25.1.0 - 25.1.13 / >=25.2.11
vaadin / 25.2.0 - 25.2.10 / >=25.2.11
vaadin / 25.3.0 - 25.3.2 / >=25.3.3
vaadin-core / 14.14.0 - 14.14.7 / >=14.14.8
vaadin-core / 23.6.0 - 23.6.16 / >=23.6.17
vaadin-core / 24.4.0 - 24.4.25 / >=24.4.26
vaadin-core / 24.5.0 - 24.5.15 / >=24.7.17
vaadin-core / 24.6.0 - 24.6.13 / >=24.7.17
vaadin-core / 24.7.0 - 24.7.16 / >=24.7.17
vaadin-core / 24.8.0 - 24.8.17 / >=24.9.24
vaadin-core / 24.9.0 - 24.9.23 / >=24.9.24
vaadin-core / 24.10.0 - 24.10.11 / >=24.10.12
vaadin-core / 25.0.0 - 25.0.13 / >=25.2.11
vaadin-core / 25.1.0 - 25.1.13 / >=25.2.11
vaadin-core / 25.2.0 - 25.2.10 / >=25.2.11
vaadin-core / 25.3.0 - 25.3.2 / >=25.3.3
flow-server / 2.13.0 - 2.13.7 / >=2.13.8
flow-server / 23.6.0 - 23.6.15 / >=23.6.16
flow-server / 24.4.0 - 24.4.18 / >=24.4.19
flow-server / 24.5.0 - 24.5.17 / >=24.7.17
flow-server / 24.6.0 - 24.6.14 / >=24.7.17
flow-server / 24.7.0 - 24.7.15 / >=24.7.16
flow-server / 24.8.0 - 24.8.16 / >=24.9.24
flow-server / 24.9.0 - 24.9.28 / >=24.9.29
flow-server / 24.10.0 - 24.10.14 / >=24.10.15
flow-server / 25.0.0 - 25.0.15 / >=25.2.11
flow-server / 25.1.0 - 25.1.18 / >=25.1.19
flow-server / 25.2.0 - 25.2.12 / >=25.2.13
flow-server / 25.3.0 - 25.3.3 / >=25.3.4
vaadin-server / 7.1.0 - 7.7.54 / >=7.7.55
vaadin-server / 8.0.0 - 8.32.1 / >=8.32.2
vaadin-server-mpr-jakarta / 7.7.36 - 7.7.54 / >=7.7.55
vaadin-server-mpr-jakarta / 8.18.0 - 8.32.1 / >=8.32.2

## Remediation

- fix: Users of affected versions should apply the following mitigation or upgrade. (source: CNA: Vaadin)
- workaround: Set the servlet init parameter org.atmosphere.cpr.dropAccessControlAllowOriginHeader to true on the Vaadin servlet, which stops the header being emitted without upgrading. In a Spring Boot application the Vaadin servlet has to be registered explicitly for the parameter to be applied. (source: CNA: Vaadin)

## Affected products and versions

- vaadin / vaadin (com.vaadin:vaadin): ≥ 14.14.0; < 14.14.8 (affected, maven); ≥ 23.6.0; < 23.6.17 (affected, maven); ≥ 24.4.0; < 24.4.26 (affected, maven); ≥ 24.5.0; ≤ 24.5.15 (affected, maven); ≥ 24.6.0; ≤ 24.6.13 (affected, maven); ≥ 24.7.0; < 24.7.17 (affected, maven); ≥ 24.8.0; ≤ 24.8.17 (affected, maven); ≥ 24.9.0; < 24.9.24 (affected, maven); ≥ 24.10.0; < 24.10.12 (affected, maven); ≥ 25.0.0; ≤ 25.0.13 (affected, maven); ≥ 25.1.0; ≤ 25.1.13 (affected, maven); ≥ 25.2.0; < 25.2.11 (affected, maven); ≥ 25.3.0; < 25.3.3 (affected, maven). Source: CNA: Vaadin
- vaadin / vaadin (com.vaadin:vaadin-core): ≥ 14.14.0; < 14.14.8 (affected, maven); ≥ 23.6.0; < 23.6.17 (affected, maven); ≥ 24.4.0; < 24.4.26 (affected, maven); ≥ 24.5.0; ≤ 24.5.15 (affected, maven); ≥ 24.6.0; ≤ 24.6.13 (affected, maven); ≥ 24.7.0; < 24.7.17 (affected, maven); ≥ 24.8.0; ≤ 24.8.17 (affected, maven); ≥ 24.9.0; < 24.9.24 (affected, maven); ≥ 24.10.0; < 24.10.12 (affected, maven); ≥ 25.0.0; ≤ 25.0.13 (affected, maven); ≥ 25.1.0; ≤ 25.1.13 (affected, maven); ≥ 25.2.0; < 25.2.11 (affected, maven); ≥ 25.3.0; < 25.3.3 (affected, maven). Source: CNA: Vaadin
- vaadin / flow (com.vaadin:flow-server): ≥ 2.13.0; < 2.13.8 (affected, maven); ≥ 23.6.0; < 23.6.16 (affected, maven); ≥ 24.4.0; < 24.4.19 (affected, maven); ≥ 24.5.0; ≤ 24.5.17 (affected, maven); ≥ 24.6.0; ≤ 24.6.14 (affected, maven); ≥ 24.7.0; < 24.7.16 (affected, maven); ≥ 24.8.0; ≤ 24.8.16 (affected, maven); ≥ 24.9.0; < 24.9.29 (affected, maven); ≥ 24.10.0; < 24.10.15 (affected, maven); ≥ 25.0.0; ≤ 25.0.15 (affected, maven); ≥ 25.1.0; < 25.1.19 (affected, maven); ≥ 25.2.0; < 25.2.13 (affected, maven); ≥ 25.3.0; < 25.3.4 (affected, maven). Source: CNA: Vaadin
- vaadin / framework (com.vaadin:vaadin-server): ≥ 7.1.0; < 7.7.55 (affected, maven); ≥ 8.0.0; < 8.32.2 (affected, maven). Source: CNA: Vaadin
- vaadin / framework (com.vaadin:vaadin-server-mpr-jakarta): ≥ 7.7.36; < 7.7.55 (affected, maven); ≥ 8.18.0; < 8.32.2 (affected, maven). Source: CNA: Vaadin

## Severity and prioritization

- CVSS 4.0: 2.3 (low); CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N; source: CNA: Vaadin

- CVSS 4.0: 2.3 (low); CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X; source: NVD: security@vaadin.com

- CISA KEV: No listing in collected sources

- EPSS: 0.19% as of 2026-11-04; percentile 9.33%

- SSVC: exploitation poc; automatable no; technical impact partial; source ADP: CISA-ADP

- Weaknesses: CWE-942, CWE-346

## Exploit evidence

- exploit: https://github.com/vaadin/flow/issues/26214 (ADP: CISA-ADP)

## References

- https://vaadin.com/security/cve-2026-110737 (CNA: Vaadin)

- https://github.com/vaadin/flow/issues/26214 (CNA: Vaadin)

- https://github.com/vaadin/flow/pull/26215 (CNA: Vaadin)

- https://github.com/vaadin/flow/issues/26214 (ADP: CISA-ADP; exploit)

- https://github.com/vaadin/flow/issues/26214 (security@vaadin.com)

- https://github.com/vaadin/flow/pull/26215 (security@vaadin.com)

- https://vaadin.com/security/cve-2026-110737 (security@vaadin.com)

- https://github.com/vaadin/flow/issues/26214 (134c704f-9b21-4f2e-91b3-4a467353bcc0)

## Provenance

- CNA: Vaadin: https://www.cve.org/CVERecord?id=CVE-2026-110737; retrieved 2026-11-04; source updated 2026-11-04

- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-110737; retrieved 2026-11-04; source updated 2026-11-04

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-110737; retrieved 2026-11-04; source updated Not reported

Revision: c8db0b7d36c4111331c03d4606dc5064b148245405ca796cc47140409dfb685e

Canonical: https://y2.dev/cve/CVE-2026-110737

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.