Timing side channel vulnerability in endpoint request handler in Vaadin 15-19
Overview
Non-constant-time comparison of CSRF tokens in endpoint request handler in com.vaadin:flow-server
versions 3.0.0 through 5.0.3 (Vaadin 15.0.0 through 18.0.6), and com.vaadin:fusion-endpoint
version 6.0.0 (Vaadin 19.0.0) allows attacker to guess a security token for Fusion endpoints via timing attack.
See CWE-208: Observable Timing Discrepancy
Description
Vaadin applications use different types of tokens for different purposes, such as preventing CSRF, managing Push and Upload requests. The token checking implementation was subject to the theoretical possibility of timing attacks based on how long it takes for a request with invalid token to be rejected.
We identified that the previous fix for this issue was incomplete. The CSRF token checking in the Fusion endpoints was neglected. We apologize for pushing out an incomplete fix.
These timing attacks could result in exposure of the user's token, which can be used to blindly submit data on the user's behalf, without the possibility of reading back the responses, or of opening websockets and listening for published data from the server for that user, which may or may not contain sensitive information due to the application’s nature.
The vulnerability is fixed using constant-time comparison for all security tokens to prevent these potential timing attacks. Applications using the affected Vaadin versions should all be updated to the latest maintenance release.
Affected products and mitigation
Users of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include:
Product version | Mitigation |
---|---|
Vaadin 15 - 17 | No longer supported. Upgrade to 18.0.7 or newer version |
Vaadin 18.0.0 - 18.0.6 | Upgrade to 18.0.7 or newer 18 version |
Vaadin 19.0.0 | Upgrade to 19.0.1 or newer 19 version |
Please note that Vaadin versions 15-17 are no longer supported and you should update either to the latest 18 version respectively.
Artifacts
Maven coordinates | Vulnerable version | Fixed version |
---|---|---|
com.vaadin:flow-server | 3.0 - 4.0 | N/A |
com.vaadin:flow-server | 5.0.0 - 5.0.3 | ≥ 5.0.4 |
com.vaadin:flow-server | 6.0.0 | ≥ 6.0.1 |
Credit
This issue was discovered and responsibly reported by Xhelal Likaj.
References
History
- 2021-03-19: Initial vulnerability report published