Skip to main content

Vaadin Flow EUVDEUVD-2026-120893

| CVE-2026-120326 MEDIUM
Improper Encoding or Escaping of Output (CWE-116)
2026-11-10 Vaadin
4.8
CVSS 4.0 · Vendor: Vaadin
View

Attack ChainAIDerived

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

  1. Access
    Supply file with crafted quoted name
  2. Exploit
    App re-serves name via unescaped setFileName
  3. Execution
    Injected filename* added to Content-Disposition
  4. Impact
    Victim browser saves attacker-chosen name/extension

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding for downstream
Exploitation Conditions

Requires an application that passes an attacker-influenced, untrusted file name to DownloadEvent.setFileName(String) or (from Vaadin 25.0) inline(String) - the canonical case being re-serving a file under the original name it was uploaded with. The crafted name must be pure US-ASCII and contain a double quote to break out of filename="..." and append an attacker-controlled filename* parameter. Limiting factors: the attacker cannot change the attachment/inline disposition and cannot split the header (no CRLF injection); a victim must actively trigger the download (UI:A); the attacker needs a path to inject the file name (PR:L); and only Vaadin 24.8 and later are affected (the DownloadEvent API does not exist below 24.8, and inline() is affected only from 25.0). Applications that do not feed untrusted names to these methods are not exploitable.

Impact

This is a genuine but modest-severity output-encoding flaw (CWE-116), not a high-priority emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:A/VC:N/VI:N/VA:N/SC:N/SI:L/SA:N, score 4.8/Medium) tells a consistent story: network-reachable and low-complexity, but it requires some privilege (PR:L - the attacker must get an untrusted file name into the system), active user interaction (UI:A - a victim must actually download the file), and the only impact is low integrity on the downloading user's system (SI:L), with no confidentiality (VC:N) or availability impact. No EPSS score, KEV listing, or SSVC automatable flag was supplied; absence of these is not evidence of safety but does mean there is no signal of mass exploitation. The vuln.today decision label is 'this_month' (not act_now/emergency), aligning with the medium rating. Crucially, exploitation is gated on an application-side coding pattern (passing an untrusted file name to DownloadEvent.setFileName/inline), so this is not exploitable against a default Vaadin install - it depends on how the application uses the API. Note the input 'Information Disclosure' tag conflicts with the CVSS VC:N (no confidentiality impact); the real impact is file-name/extension spoofing (integrity), so that tag appears mislabeled. Treat this as a scheduled-patch item, not a drop-everything issue.

Exploit ScenarioDerived

An attacker uploads (or otherwise supplies) a file whose name contains a double quote plus an injected filename* parameter, e.g. a name that closes the quoted filename early and appends filename*=UTF-8''evil.exe. When a victim later downloads that file through an application that re-serves it under its stored name via the vulnerable DownloadEvent method, the browser prefers the attacker-controlled filename* and saves the file under a name and extension of the attacker's choosing, defeating the application's extension restrictions. No public exploit identified at time of analysis; the only linked code is the vendor fix PR.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

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

Alert me

AnalysisAIv1 – Nov 10, 2026

Output-encoding failure in Vaadin Flow's DownloadEvent allows an attacker who influences an untrusted file name passed to setFileName() or inline() to append a filename* parameter to the Content-Disposition header and cause the browser to save a downloaded file under an attacker-chosen name and extension. Affected are Vaadin 24.8.0 through 24.8.17, 24.9.0 through 24.9.25, 24.10.0 through 24.10.13, 25.0.0 through 25.0.13, 25.1.0 through 25.1.13, 25.2.0 through 25.2.12, and 25.3.0 through 25.3.4; inline(String) is affected only from 25.0, and versions below 24.8 are not affected. The CVSS 4.0 score is 4.8 and the independent assessment characterizes this as a genuine but modest-severity CWE-116 issue, not a high-priority emergency; no public exploit identified at time of analysis.

RemediationAI

Upgrade to a fixed Vaadin release: 24.9.26 for 24.9.x, 24.10.14 for 24.10.x, 25.2.13 for 25.2.x, and 25.3.5 for 25.3.x. The 24.8 line has no fixed release, so upgrade to 24.9.26 or newer; the 25.0 and 25.1 lines also have no fixed release, so upgrade to 25.2.13 or newer. The vendor advisory is https://vaadin.com/security/cve-2026-120326 and the upstream patch is https://github.com/vaadin/flow/pull/26704. If upgrade cannot be applied immediately, avoid passing untrusted or user-supplied file names to DownloadEvent.setFileName(String) or inline(String), or sanitize them before use by removing double quotes, backslashes, and ISO control characters; this reduces exposure but does not replace the vendor fix, and applications that never feed untrusted names to these methods are not exploitable.

Affected VersionsENISA

vaadin-core 24.8.0 ≤24.8.17
Vaadin 24.8.0 ≤24.8.17
Vaadin 24.10.0 <24.10.14
vaadin-core 25.3.0 <25.3.5
Vaadin 25.0.0 ≤25.0.13
vaadin-core 25.0.0 ≤25.0.13
Vaadin 25.2.0 <25.2.13
Flow 25.3.0 <25.3.6
Vaadin 24.9.0 <24.9.26
Flow 24.10.0 <24.10.17
Flow 24.8.0 ≤24.8.16
vaadin-core 24.9.0 <24.9.26
vaadin-core 25.1.0 ≤25.1.13
Flow 25.0.0 ≤25.0.15
Vaadin 25.3.0 <25.3.5
vaadin-core 24.10.0 <24.10.14
Flow 25.2.0 <25.2.16
Flow 24.9.0 <24.9.31
Vaadin 25.1.0 ≤25.1.13
vaadin-core 25.2.0 <25.2.13
Flow 25.1.0 ≤25.1.19

Affected Packages

euvd flow fix: 24.9.31, 24.10.17, 25.2.16, 25.3.6
euvd vaadin fix: 24.9.26, 24.10.14, 25.2.13, 25.3.5
euvd vaadin_core fix: 24.9.26, 24.10.14, 25.2.13, 25.3.5

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Vaadin Flow's DownloadEvent builds the HTTP Content-Disposition header for file downloads. In the pure-US-ASCII branch it placed the supplied name verbatim inside filename="...", so a double quote in the name terminated the quoted-string early; trailing text was parsed by browsers as additional header parameters, including an attacker-supplied filename* parameter, which browsers prefer over filename. This is CWE-116 improper encoding/escaping of output, specifically a missing RFC 9110 quoted-string escape for backslashes and double quotes and missing removal of ISO control characters; the upstream fix adds EncodeUtil.quotedStringEscape and removeControlCharacters and centralizes setContentDisposition/buildContentDisposition for both attachment and inline modes. The attacker cannot change the attachment/inline disposition or split the header, and exploitation is conditional on the application passing an attacker-influenced, pure-US-ASCII file name containing a double quote to DownloadEvent.setFileName(String) or, from Vaadin 25.0, inline(String); the canonical case is re-serving an uploaded file under its original name. CPE data maps the affected code to vaadin:vaadin, vaadin:vaadin-core, and vaadin:flow, with the vulnerable API present from 24.8 onward; the CVSS vectors reflect PR:L and a victim-triggered download (UI:R/UI:A), not remote unauthenticated exploitation.

Know when Vaadin 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 (Vaadin) PRIMARY 4.8 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:A/VC:N/VI:N/VA:N/SC:N/SI:L/SA:N
vuln.today AI 4.1 MEDIUM

Network-delivered and low-complexity, but PR:L (attacker must inject the file name) and UI:R (victim must download); impact is low integrity on the victim's system, a scope change (S:C), with no confidentiality or availability loss.

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

Primary rating from Vendor (Vaadin).

CVSS VectorVendor: Vaadin

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

Lifecycle Timeline

1
Patch available
Nov 10, 2026 - 13:02 EUVD

DescriptionCVE.org

DownloadEvent.setFileName(String) in Vaadin Flow writes the download file name into the Content-Disposition header without escaping it. When the name is pure US-ASCII the header is built as attachment; filename="<name>" with the name inserted verbatim, so a double quote in the name ends the quoted string early and the rest of the name is read by the browser as further header parameters. The inline(String) variant, present from Vaadin 25.0, builds the name the same way. An application that passes an untrusted file name to either method, for example when re-serving a file under the name it was uploaded with, lets an attacker add a filename* parameter. Browsers prefer filename* over filename, so the file is saved under a name and extension of the attacker's choosing, which defeats any file name or extension restriction the application enforces. The attacker cannot change the attachment or inline disposition itself and cannot split the header.

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

Product version Vaadin 24.8.0 - 24.8.17 Vaadin 24.9.0 - 24.9.25 Vaadin 24.10.0 - 24.10.13 Vaadin 25.0.0 - 25.0.13 Vaadin 25.1.0 - 25.1.13 Vaadin 25.2.0 - 25.2.12 Vaadin 25.3.0 - 25.3.4

Mitigation No fixed release on this line, upgrade to 24.9.26 or newer Upgrade to 24.9.26 Upgrade to 24.10.14 No fixed release on this line, upgrade to 25.2.13 or newer No fixed release on this line, upgrade to 25.2.13 or newer Upgrade to 25.2.13 Upgrade to 25.3.5

Vaadin versions below 24.8 are not affected: the DownloadEvent API does not exist in them.

Threat Intelligence Overview

Prevalence
Medium
widely used enterprise Java web UI framework, but not universally deployed
Data Quality
4 sources
Confidence: Medium

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 MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
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.

More in Vaadin

View all
CVE-2021-33611 MEDIUM POC
6.1 Nov 02

Missing output sanitization in test sources in org.webjars.bowergithub.vaadin:vaadin-menu-bar versions 1.0.0 through 1.2

CVE-2026-110803 HIGH
8.7 Oct 21

Unauthenticated remote denial of service in Vaadin Framework 8 (com.vaadin:vaadin-server 8.16.0 through 8.32.1, and vaad

CVE-2026-107588 HIGH
8.4 Oct 21

Charts rendered by Vaadin Charts across Vaadin 22 through 25.3.0 bundle a pinned Highcharts release (9.2.2 in Vaadin 22-

CVE-2021-31411 HIGH
7.8 May 05

Insecure temporary directory usage in frontend build functionality of com.vaadin:flow-server versions 2.0.9 through 2.5.

CVE-2022-29567 HIGH
7.5 May 24

The default configuration of a TreeGrid component uses Object::toString as a key on the client-side and server communica

CVE-2021-31409 HIGH
7.5 May 06

Unsafe validation RegEx in EmailValidator component in com.vaadin:vaadin-compatibility-server versions 8.0.0 through 8.1

CVE-2021-31410 HIGH
7.5 Apr 23

Overly relaxed configuration of frontend resources server in Vaadin Designer versions 4.3.0 through 4.6.3 allows remote

CVE-2021-31407 HIGH
7.5 Apr 23

Vulnerability in OSGi integration in com.vaadin:flow-server versions 1.2.0 through 2.4.7 (Vaadin 12.0.0 through 14.4.9),

CVE-2021-31405 HIGH
7.5 Apr 23

Unsafe validation RegEx in EmailField component in com.vaadin:vaadin-text-field-flow versions 2.0.4 through 2.3.2 (Vaadi

CVE-2021-31408 HIGH
7.1 Apr 23

Authentication.logout() helper in com.vaadin:flow-client versions 5.0.0 prior to 6.0.0 (Vaadin 18), and 6.0.0 through 6.

CVE-2023-25499 MEDIUM
6.5 Jun 22

When adding non-visible components to the UI in server side, content is sent to the browser in Vaadin 10.0.0 through 10.

CVE-2026-91860 MEDIUM
6.3 Sep 30

Deep-merge prototype pollution in Vaadin Charts and Vaadin Component Base lets remote, unauthenticated attackers write a

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