All vulnerability reports

Timing side channel vulnerability in UIDL request handler in Vaadin 10, 11-14, and 15-18

Severity:
Medium (Base score 4.0) CVSS:3.1/AV:L/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N
CVE entry:
CVE-2021-31404

Overview

Non-constant-time comparison of CSRF tokens in UIDL request handler in com.vaadin:flow-server versions 1.0.0 through 1.0.13 (Vaadin 10.0.0 through 10.0.16), 1.1.0 prior to 2.0.0 (Vaadin 11 prior to 14), 2.0.0 through 2.4.6 (Vaadin 14.0.0 through 14.4.6), 3.0.0 prior to 5.0.0 (Vaadin 15 prior to 18), and 5.0.0 through 5.0.2 (Vaadin 18.0.0 through 18.0.5) allows attacker to guess a security token 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.

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 10.0.0 - 10.0.16 Upgrade to 10.0.17 or newer 10 version
Vaadin 11 - 13 No longer supported. Upgrade to 14.4.7 or newer version
Vaadin 14.0.0 - 14.4.6 Upgrade to 14.4.7 or newer version
Vaadin 15 - 17 No longer supported. Upgrade to 18.0.6 or newer version
Vaadin 18.0.0 - 18.0.5 Upgrade to 18.0.6 or newer 18 version

Please note that Vaadin versions 11-13 and 15-17 are no longer supported and you should update either to the latest 14 or 18 version respectively. 

Artifacts

Maven coordinates Vulnerable version Fixed version
com.vaadin:flow-server 1.0.0 - 1.0.13 ≥ 1.0.14
com.vaadin:flow-server 1.1 - 1.4 N/A
com.vaadin:flow-server 2.0.0 - 2.4.6 ≥ 2.4.7
com.vaadin:flow-server 3.0 - 4.0 N/A
com.vaadin:flow-server 5.0.0 - 5.0.2 ≥ 5.0.3

Credit

This issue was discovered and responsibly reported by Xhelal Likaj.

References

History

  • 2021-02-17: Initial vulnerability report published