{"id":"CVE-2026-110737","kind":"vulnerability","aliases":["CVE-2026-110737"],"related":[],"title":"Vaadin: push endpoint reflects any Origin with credentials allowed","description":"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.\n\n\nUsers of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include:\n\nProduct version\nVaadin 14.14.0 - 14.14.7\nVaadin 23.6.0 - 23.6.16\nVaadin 24.4.0 - 24.4.25\nVaadin 24.5.0 - 24.5.15\nVaadin 24.6.0 - 24.6.13\nVaadin 24.7.0 - 24.7.16\nVaadin 24.8.0 - 24.8.17\nVaadin 24.9.0 - 24.9.23\nVaadin 24.10.0 - 24.10.11\nVaadin 25.0.0 - 25.0.13\nVaadin 25.1.0 - 25.1.13\nVaadin 25.2.0 - 25.2.10\nVaadin 25.3.0 - 25.3.2\nVaadin Framework 7.1.0 - 7.7.54\nVaadin Framework 8.0.0 - 8.32.1\n\nMitigation\nUpgrade to 14.14.8\nUpgrade to 23.6.17\nUpgrade to 24.4.26\nUpgrade to 24.7.17\nUpgrade to 24.7.17\nUpgrade to 24.7.17\nUpgrade to 24.9.24\nUpgrade to 24.9.24\nUpgrade to 24.10.12\nUpgrade to 25.2.11\nUpgrade to 25.2.11\nUpgrade to 25.2.11\nUpgrade to 25.3.3\nUpgrade to 7.7.55\nUpgrade to 8.32.2\n\nPlease 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.\n\nArtifacts\nMaven coordinates / Vulnerable versions / Fixed version\ncom.vaadin:vaadin / 14.14.0 - 14.14.7 / >=14.14.8\ncom.vaadin:vaadin / 23.6.0 - 23.6.16 / >=23.6.17\ncom.vaadin:vaadin / 24.4.0 - 24.4.25 / >=24.4.26\ncom.vaadin:vaadin / 24.5.0 - 24.5.15 / >=24.7.17\ncom.vaadin:vaadin / 24.6.0 - 24.6.13 / >=24.7.17\ncom.vaadin:vaadin / 24.7.0 - 24.7.16 / >=24.7.17\ncom.vaadin:vaadin / 24.8.0 - 24.8.17 / >=24.9.24\ncom.vaadin:vaadin / 24.9.0 - 24.9.23 / >=24.9.24\ncom.vaadin:vaadin / 24.10.0 - 24.10.11 / >=24.10.12\ncom.vaadin:vaadin / 25.0.0 - 25.0.13 / >=25.2.11\ncom.vaadin:vaadin / 25.1.0 - 25.1.13 / >=25.2.11\ncom.vaadin:vaadin / 25.2.0 - 25.2.10 / >=25.2.11\ncom.vaadin:vaadin / 25.3.0 - 25.3.2 / >=25.3.3\ncom.vaadin:vaadin-core / 14.14.0 - 14.14.7 / >=14.14.8\ncom.vaadin:vaadin-core / 23.6.0 - 23.6.16 / >=23.6.17\ncom.vaadin:vaadin-core / 24.4.0 - 24.4.25 / >=24.4.26\ncom.vaadin:vaadin-core / 24.5.0 - 24.5.15 / >=24.7.17\ncom.vaadin:vaadin-core / 24.6.0 - 24.6.13 / >=24.7.17\ncom.vaadin:vaadin-core / 24.7.0 - 24.7.16 / >=24.7.17\ncom.vaadin:vaadin-core / 24.8.0 - 24.8.17 / >=24.9.24\ncom.vaadin:vaadin-core / 24.9.0 - 24.9.23 / >=24.9.24\ncom.vaadin:vaadin-core / 24.10.0 - 24.10.11 / >=24.10.12\ncom.vaadin:vaadin-core / 25.0.0 - 25.0.13 / >=25.2.11\ncom.vaadin:vaadin-core / 25.1.0 - 25.1.13 / >=25.2.11\ncom.vaadin:vaadin-core / 25.2.0 - 25.2.10 / >=25.2.11\ncom.vaadin:vaadin-core / 25.3.0 - 25.3.2 / >=25.3.3\ncom.vaadin:flow-server / 2.13.0 - 2.13.7 / >=2.13.8\ncom.vaadin:flow-server / 23.6.0 - 23.6.15 / >=23.6.16\ncom.vaadin:flow-server / 24.4.0 - 24.4.18 / >=24.4.19\ncom.vaadin:flow-server / 24.5.0 - 24.5.17 / >=24.7.17\ncom.vaadin:flow-server / 24.6.0 - 24.6.14 / >=24.7.17\ncom.vaadin:flow-server / 24.7.0 - 24.7.15 / >=24.7.16\ncom.vaadin:flow-server / 24.8.0 - 24.8.16 / >=24.9.24\ncom.vaadin:flow-server / 24.9.0 - 24.9.28 / >=24.9.29\ncom.vaadin:flow-server / 24.10.0 - 24.10.14 / >=24.10.15\ncom.vaadin:flow-server / 25.0.0 - 25.0.15 / >=25.2.11\ncom.vaadin:flow-server / 25.1.0 - 25.1.18 / >=25.1.19\ncom.vaadin:flow-server / 25.2.0 - 25.2.12 / >=25.2.13\ncom.vaadin:flow-server / 25.3.0 - 25.3.3 / >=25.3.4\ncom.vaadin:vaadin-server / 7.1.0 - 7.7.54 / >=7.7.55\ncom.vaadin:vaadin-server / 8.0.0 - 8.32.1 / >=8.32.2\ncom.vaadin:vaadin-server-mpr-jakarta / 7.7.36 - 7.7.54 / >=7.7.55\ncom.vaadin:vaadin-server-mpr-jakarta / 8.18.0 - 8.32.1 / >=8.32.2","summary":"The push endpoint of a Vaadin application that uses @Push echoes the request Origin into Access-Control-Allow-Origin and allows credentials, so a page on another origin can make cookie-carrying requests and read the responses. Reading anything useful also requires the session's push identifier.","severity":"low","cvss":2.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["flow-server","java","package","self-hosted","vaadin"],"not_affected_if":["no-server-push","websocket-transport-only"],"how_to_check":"- Search the project for `@Push` annotations; applications without server push are not affected.\n- Check the Vaadin version in the build file, for example `mvn dependency:tree | grep vaadin` or the `com.vaadin:vaadin` / `com.vaadin:flow-server` version in `pom.xml` or `build.gradle`.\n- Compare the version against the vulnerable ranges listed in the sources.","fix":"- Upgrade `com.vaadin:vaadin` (or `vaadin-core`) to the fixed release for your line, for example `14.14.8`, `23.6.17`, `24.4.26`, `24.7.17`, `24.9.24`, `24.10.12`, `25.2.11`, `25.3.3`.\n- Upgrade `com.vaadin:flow-server` to its fixed release, for example `2.13.8`, `23.6.16`, `24.4.19`, `24.9.29`, `24.10.15`, `25.1.19`, `25.2.13`, `25.3.4`.\n- For Vaadin Framework 7 or 8, upgrade `com.vaadin:vaadin-server` to `7.7.55` or `8.32.2`.\n- Vaadin 10-13 and 15-22 are no longer supported; move to 14, 23, 24 or 25.","status":"open","published_at":"2026-10-27T11:17:27+00:00","first_seen_at":"2026-10-27T11:31:27+00:00","triaged_at":"2026-10-27T11:32:25+00:00","updated_at":"2026-10-27T11:32:25+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-27T11:32:25Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade `com.vaadin:vaadin` (or `vaadin-core`) to the fixed release for your line, for example `14.14.8`, `23.6.17`, `24.4.26`, `24.7.17`, `24.9.24`, `24.10.12`, `25.2.11`, `25.3.3`.\n- Upgrade `com.vaadin:flow-server` to its fixed release, for example `2.13.8`, `23.6.16`, `24.4.19`, `24.9.29`, `24.10.15`, `25.1.19`, `25.2.13`, `25.3.4`.\n- For Vaadin Framework 7 or 8, upgrade `com.vaadin:vaadin-server` to `7.7.55` or `8.32.2`.\n- Vaadin 10-13 and 15-22 are no longer supported; move to 14, 23, 24 or 25.","reach":"internet","title":"Vaadin: push endpoint reflects any Origin with credentials allowed","impact":"low","summary":"The push endpoint of a Vaadin application that uses @Push echoes the request Origin into Access-Control-Allow-Origin and allows credentials, so a page on another origin can make cookie-carrying requests and read the responses. Reading anything useful also requires the session's push identifier.","category":"package","nicknames":[],"who_cares":["vaadin","java","flow-server","self-hosted"],"confidence":0.8,"needs_auth":"unknown","worst_case":"cross-origin page reads push responses using the user's cookies","analyst_note":"","how_to_check":"- Search the project for `@Push` annotations; applications without server push are not affected.\n- Check the Vaadin version in the build file, for example `mvn dependency:tree | grep vaadin` or the `com.vaadin:vaadin` / `com.vaadin:flow-server` version in `pom.xml` or `build.gradle`.\n- Compare the version against the vulnerable ranges listed in the sources.","needs_analyst":false,"not_affected_if":["no-server-push","websocket-transport-only"],"who_is_affected":"Applications that use server push (`@Push`) on an affected Flow or Vaadin Framework release are exposed; the flaw is in the push endpoint, not in the WebSocket transport. Applications without `@Push` are not affected. Exploitation also needs the push identifier of the session to read useful data.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000995,"input_tokens":5693,"output_tokens":851,"severity_before":"low"},"analyst_status":null,"analyst_note":null,"search":"'-110737':12A,15A '-13':321C '-2026':11A,14A '-22':324C '10':320C '14':337C '14.14.0':223C,351C,418C '14.14.7':224C,352C,419C '14.14.8':272C,353C,420C '15':323C '2.13.0':509C '2.13.7':510C '2.13.8':511C '2015':182C '23':338C '23.6.0':226C,356C,425C,516C '23.6.15':517C '23.6.16':227C,357C,426C,518C '23.6.17':275C,358C,427C '24':339C '24.10.0':247C,391C,474C,565C '24.10.11':248C,392C,475C '24.10.12':296C,393C,476C '24.10.14':566C '24.10.15':567C '24.4.0':229C,361C,432C,523C '24.4.18':524C '24.4.19':525C '24.4.25':230C,362C,433C '24.4.26':278C,363C,434C '24.5.0':232C,366C,439C,530C '24.5.15':233C,367C,440C '24.5.17':531C '24.6.0':235C,371C,446C,537C '24.6.13':236C,372C,447C '24.6.14':538C '24.7.0':238C,376C,453C,544C '24.7.15':545C '24.7.16':239C,377C,454C,546C '24.7.17':281C,284C,287C,368C,373C,378C,441C,448C,455C,532C,539C '24.8.0':241C,381C,460C,551C '24.8.16':552C '24.8.17':242C,382C,461C '24.9.0':244C,386C,467C,558C '24.9.23':245C,387C,468C '24.9.24':290C,293C,383C,388C,462C,469C,553C '24.9.28':559C '24.9.29':560C '25':340C '25.0.0':250C,396C,481C,572C '25.0.13':251C,397C,482C '25.0.15':573C '25.1.0':253C,401C,488C,579C '25.1.13':254C,402C,489C '25.1.18':580C '25.1.19':581C '25.2.0':256C,406C,495C,586C '25.2.10':257C,407C,496C '25.2.11':299C,302C,305C,398C,403C,408C,483C,490C,497C,574C '25.2.12':587C '25.2.13':588C '25.3.0':259C,411C,502C,593C '25.3.2':260C,412C,503C '25.3.3':308C,413C,504C,594C '25.3.4':595C '7':616C '7.1.0':195C,263C,600C '7.7.54':264C,601C '7.7.55':311C,602C '8.0.0':267C,607C '8.32.1':268C,608C '8.32.2':314C,609C 'access':41B,92C,107C 'access-control-allow-origin':40B,91C 'add':201C 'affect':169C,204C 'allow':9A,43B,46B,94C,99C,109C 'also':67B,153C 'although':149C 'anoth':52B 'anyth':65B,151C 'appli':207C 'applic':31B,80C,161C 'artifact':342C 'atmospher':104C 'behaviour':177C 'carri':58B,124C 'com.vaadin':349C,354C,359C,364C,369C,374C,379C,384C,389C,394C,399C,404C,409C,414C,421C,428C,435C,442C,449C,456C,463C,470C,477C,484C,491C,498C,505C,512C,519C,526C,533C,540C,547C,554C,561C,568C,575C,582C,589C,596C,603C,610C 'configur':103C 'control':42B,93C,108C 'cooki':57B,144C 'cookie-carri':56B 'coordin':344C 'core':417C,424C,431C,438C,445C,452C,459C,466C,473C,480C,487C,494C,501C 'corsinterceptor':117C 'credenti':8A,47B,100C 'cross':134C 'cve':10A,13A 'drop':106C 'echo':35B,119C 'either':333C 'endpoint':3A,27B,76C,139C 'everi':187C 'fals':114C 'fix':216C,347C 'flow':17B,102C,188C,507C,514C,521C,528C,535C,542C,549C,556C,563C,570C,577C,584C,591C 'flow-serv':16B,506C,513C,520C,527C,534C,541C,548C,555C,562C,569C,576C,583C,590C 'follow':209C 'framework':193C,262C,266C 'header':97C,111C 'host':23B 'identifi':73B,157C 'includ':219C 'introduc':179C 'issu':218C 'jakarta':615C 'januari':181C 'java':19B 'latest':336C 'longer':327C 'make':55B,132C 'maven':343C 'mitig':210C,269C 'mpr':614C 'neither':171C 'note':316C 'origin':6A,38B,44B,53B,88C,95C,110C,121C,129C,135C 'packag':20B 'page':50B,126C 'pleas':315C 'present':185C 'product':220C 'push':2A,26B,34B,72B,75C,84C,156C,166C,199C 'read':61B,64B,146C,150C 'reflect':4A,85C 'releas':189C,213C 'request':37B,59B,87C,123C,136C 'requir':68B,154C 'respons':63B,96C,148C 'self':22B 'self-host':21B 'server':18B,83C,508C,515C,522C,529C,536C,543C,550C,557C,564C,571C,578C,585C,592C,599C,606C,613C 'session':70B,160C 'set':112C 'support':328C 'therefor':131C 'transport':175C 'updat':332C 'upgrad':212C,270C,273C,276C,279C,282C,285C,288C,291C,294C,297C,300C,303C,306C,309C,312C 'use':33B,66B,82C,152C,165C 'user':142C,202C 'vaadin':1A,24B,30B,79C,192C,222C,225C,228C,231C,234C,237C,240C,243C,246C,249C,252C,255C,258C,261C,265C,318C,350C,355C,360C,365C,370C,375C,380C,385C,390C,395C,400C,405C,410C,416C,423C,430C,437C,444C,451C,458C,465C,472C,479C,486C,493C,500C,598C,605C,612C 'vaadin-cor':415C,422C,429C,436C,443C,450C,457C,464C,471C,478C,485C,492C,499C 'vaadin-serv':597C,604C 'vaadin-server-mpr-jakarta':611C 'version':205C,221C,319C,341C,346C,348C 'vulner':345C 'websocket':174C 'whatev':120C","nicknames":[],"mitigations":[],"who_affected":"Applications that use server push (`@Push`) on an affected Flow or Vaadin Framework release are exposed; the flaw is in the push endpoint, not in the WebSocket transport. Applications without `@Push` are not affected. Exploitation also needs the push identifier of the session to read useful data.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-27T11:17:27+00:00","kev":null,"cvss_vector":"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","cvss_by":"security@vaadin.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-110737","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-110737","severity":null,"published_at":"2026-10-27T11:17:27+00:00","modified_at":"2026-10-27T11:17:27+00:00","first_seen_at":"2026-10-27T11:31:27+00:00","fetched_at":"2026-10-27T11:31:27+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}