Miggo Logo

GHSA-c7v7-rqfm-f44j: Vaadin Platform possible file bypass via upload validation on the server-side

N/A

CVSS Score

Basic Information

CVE ID
-
EPSS Score
-
Published
9/4/2025
Updated
9/4/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
-
Package NameEcosystemVulnerable VersionsFirst Patched Version
com.vaadin:vaadinmaven>= 14.0.0, <= 14.13.014.13.1
com.vaadin:vaadinmaven>= 23.0.0, <= 23.6.123.6.2
com.vaadin:vaadinmaven>= 24.0.0, <= 24.7.624.7.7

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability exists in the com.vaadin.flow.component.upload.Upload class and is related to improper state management of the interrupted flag in a multi-threaded, multi-file upload scenario. The core of the issue is a race condition. When interruptUpload() is called, it sets interrupted = true. However, because the interrupted variable was not declared as volatile, changes made by one thread (the one calling interruptUpload) might not be immediately visible to other threads (the ones handling the file uploads). Furthermore, the endUpload() method, which is called after each file upload completes, unconditionally reset interrupted to false. In a multi-upload scenario, this means that if one upload is interrupted, the interrupted flag is reset right after that specific upload is terminated, allowing subsequent files in the same batch to be uploaded without being subject to the interruption, effectively bypassing the intended validation. The fix involves making the interrupted flag volatile to ensure its state is consistent across all threads and modifying endUpload() to only reset the interrupted flag after all uploads have completed. Therefore, any user of the Vaadin Upload component relying on the interruptUpload functionality for validation was vulnerable.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### **s*ription W**n t** V***in Uplo**'s st*rt list*n*r is us** to v*li**t* m*t***t* **out *n in*omin* uplo**, it is possi*l* to *yp*ss t** uplo** v*li**tion. Us*rs o* *****t** v*rsions s*oul* *pply t** up*r*** to * mor* r***nt V***in v*rsion.

Reasoning

T** vuln*r**ility *xists in t** `*om.v***in.*low.*ompon*nt.uplo**.Uplo**` *l*ss *n* is r*l*t** to improp*r st*t* m*n***m*nt o* t** `int*rrupt**` *l** in * multi-t*r*****, multi-*il* uplo** s**n*rio. T** *or* o* t** issu* is * r*** *on*ition. W**n `in