Executive brief
Vaultwarden, an open-source password management server, contains a flaw in how it handles multi-factor authentication (MFA) using security keys. An attacker who has already stolen a user's password can send a malicious request that permanently corrupts the user's security key settings on the server. This results in a persistent lockout or denial of service for that specific MFA method, potentially preventing the legitimate user from accessing their vault or recovery options.
Technical details
A vulnerability exists in the `validate_webauthn_login()` function of Vaultwarden where persistent credential metadata (`backup_eligible` and `backup_state` flags) is updated based on unverified `authenticatorData`. The root cause is that `check_and_update_backup_eligible()` is called and persists changes to the database before `finish_passkey_authentication()` performs signature validation. If the signature check subsequently fails, the database transaction is not rolled back. An attacker with valid primary credentials (password) can exploit this by submitting a tampered WebAuthn assertion to permanently modify stored backup flags, leading to a persistent denial of service for WebAuthn 2FA. This issue is fixed in version 1.35.5.
Affected products
- dani-garcia Vaultwarden <= 1.35.4
Timeline
- 2026-04-12: patched: Version 1.35.5 released
- 2026-04-25: advisory: GitHub Security Advisory GHSA-x7g7-cgx5-jhx2 published
- 2026-05-05: disclosed: CVE-2026-31835 published to NVD