Specially crafted ZIP archives can escape the intended extraction directory during Node.js download and extraction in Vaadin 14.2.0 through 14.14.0, 23.0.0 through 23.6.6, 24.0.0 through 24.9.8, and 25.0.0 through 25.0.2.
See CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
Description
Vaadin's build process can automatically download and extract Node.js if it is not installed locally. If an attacker can intercept or control this download (via DNS hijacking, MITM attack, compromised mirror, or supply chain attack), they can serve a malicious archive containing path traversal sequences that write files outside the intended extraction directory, potentially anywhere the application has write access.
Affected products and mitigation
Users of affected versions should upgrade to a fixed version.
| Product version |
Mitigation |
|
|
|
|
|
|
|
|
|
|
|
Upgrade to 25.0.4 or newer
|
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 or 25 version.
Workaround: Use a globally preinstalled Node.js that is compatible with the Vaadin version instead of relying on Vaadin's automatic Node.js download.
Artifacts
| Maven coordinates |
Vulnerable version |
Fixed version |
| com.vaadin:flow-server |
2.0.0 - 2.13.0 |
≥2.13.1 |
| com.vaadin:flow-server |
23.0.0 - 23.6.7 |
≥23.6.8 |
| com.vaadin:flow-server |
24.0.0 - 24.9.9 |
≥24.9.10 |
| com.vaadin:flow-build-tools |
25.0.0 - 25.0.3 |
≥25.0.4 |
References
- https://github.com/vaadin/flow/pull/23125
https://github.com/vaadin/flow/pull/23130
https://github.com/vaadin/flow/pull/23133
https://github.com/vaadin/flow/pull/23135
https://github.com/vaadin/flow/pull/23131
-