Miggo Logo

CVE-2025-9467: Vaadin Framework possible file bypass via upload validation on the server-side

N/A

CVSS Score

Basic Information

EPSS Score
0.29918%
Published
9/4/2025
Updated
9/4/2025
KEV Status
No
Technology
TechnologyJava

Technical Details

CVSS Vector
-
Package NameEcosystemVulnerable VersionsFirst Patched Version
com.vaadin:vaadin-servermaven>= 7.0.0, <= 7.7.477.7.48
com.vaadin:vaadin-servermaven>= 8.0.0, <= 8.28.18.28.2

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability is a race condition in the file upload mechanism. The provided patch from commit bfe9e507cdcc5d90a2312c8f0162f798a29ba635 clearly shows the fix. The endUpload method in com.vaadin.flow.component.upload.Upload is modified to only reset the interrupted flag when all active uploads are complete (activeUploads == 0). Previously, it was reset after every single upload, creating a window where a file validation failure that should interrupt all uploads could be ignored for other files in the same batch. An attacker could exploit this by sending a batch of files where the first one triggers a validation error and an interruption, but a subsequent malicious file gets processed because the interruption is prematurely cleared. While the security advisory refers to older vaadin-server packages, the provided commit is for the newer vaadin-flow-components. The fundamental logic of the vulnerability is the same, and the endUpload function is the core of the flawed implementation.

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 is * r*** *on*ition in t** *il* uplo** m****nism. T** provi*** p*t** *rom *ommit `****************************************` *l**rly s*ows t** *ix. T** `*n*Uplo**` m*t*o* in `*om.v***in.*low.*ompon*nt.uplo**.Uplo**` is mo*i*i** to on