Web-vault throws SubtleCrypto error

  • Vaultwarden v. 1.32.0 (via docker)
  • web-vault v. 2024.6.2
  • Proxied via Traefik v. 3.1.0, confirmed websocket working under new config
  • PBKDF2 w/ 600000 iterations

Vaults load fine on iOS clients as well as browser plugins (in Edge, Brave, etc.) however the web vault fails to load. Once I authenticate, I see a small spinner where items should display.

After several minutes, the spinner vanishes. I have two shared vaults, whose items do display. When I select “My Vault” & “All Items” (the default) I can never see items.

On the server side, there are no errors logged. Even with verbose logging turned up, I see nothing but successful gets. On the browser side, I see this error immediately after authentication:

web-crypto-function.service.ts:149 Uncaught (in promise) TypeError: Failed to execute 'digest' on 'SubtleCrypto': The provided value is not of type '(ArrayBuffer or ArrayBufferView)'.
    at E.<anonymous> (web-crypto-function.service.ts:149:38)
    at Generator.next (<anonymous>)
    at encrypt-worker.0d0845fabb9cc329f366.js:1:14348
    at new Promise (<anonymous>)
    at x (encrypt-worker.0d0845fabb9cc329f366.js:1:14093)
    at E.hash (encrypt-worker.0d0845fabb9cc329f366.js:1:16093)
    at K.<anonymous> (encrypt.service.implementation.ts:205:56)
    at Generator.next (<anonymous>)
    at encrypt-worker.0d0845fabb9cc329f366.js:1:25327
    at new Promise (<anonymous>)
(anonymous) @ web-crypto-function.service.ts:149
(anonymous) @ encrypt-worker.0d0845fabb9cc329f366.js:1
x @ encrypt-worker.0d0845fabb9cc329f366.js:1
hash @ encrypt-worker.0d0845fabb9cc329f366.js:1
(anonymous) @ encrypt.service.implementation.ts:205
(anonymous) @ encrypt-worker.0d0845fabb9cc329f366.js:1
J @ encrypt-worker.0d0845fabb9cc329f366.js:1
hash @ encrypt-worker.0d0845fabb9cc329f366.js:1
(anonymous) @ login-uri.ts:51
(anonymous) @ encrypt-worker.0d0845fabb9cc329f366.js:1
Rt @ encrypt-worker.0d0845fabb9cc329f366.js:1
validateChecksum @ encrypt-worker.0d0845fabb9cc329f366.js:1
(anonymous) @ login.ts:78
a @ encrypt-worker.0d0845fabb9cc329f366.js:1
Promise.then
o @ encrypt-worker.0d0845fabb9cc329f366.js:1
(anonymous) @ encrypt-worker.0d0845fabb9cc329f366.js:1
$t @ encrypt-worker.0d0845fabb9cc329f366.js:1
(anonymous) @ encrypt.worker.ts:34

This leads me to believe there’s an item/items within my vault that are causing trouble. I’ve gone through them via app to see if anything’s out of order and they are all straightforward. I checked to see if there were any nulls in the database for ciphers, and there are none.

Has anyone else see this behavior before? Is there a good method to sanitize the vault database other than export/import shenanigans that might help me isolate a bad item? I’d like to transition to Argon2id, but I don’t want to try that while in this weird state of everything but the web UI working properly.

I just noticed that I experience the same issue. Happens in both Firefox 129.0.2 and Safari 17.5 (19618.2.12.11.6) on macOS 14.5 (23F79). Same issue with both Vaultwarden 1.31.0 and 1.32.0. I’m not sure when it worked last. Browser extensions works fine.

Proxied via Caddy using the official proxy example.

Anyone that has found a workaround or fix?

Hi, same here, with 1.32. I’m not even sure I added an item which could compromise the vault.
TypeError: SubtleCrypto.digest: Argument 2 could not be converted to any of: ArrayBufferView, ArrayBuffer.
Any hint would be welcome :wink:

Don’t know the reason behind the issue, but solved it by exporting my vault, clearing all secrets and then importing from the exported json. Works fine now. So I guess there were items within my vault that caused the trouble.