Skip to main content


Vaultwarden vs KeePassXC for extreme security


I was thinking about how all of my passwords are compromised if I have malware on my system. It made me wonder, does Vaultwarden or KeePassXC/KeePassDX offer better protection on a malware infected system?

Vaultwarden
- Only accessed locally via LAN/VPN
- Set up for 2 factor authentication using WebAuthn (FIDO)

KeePasssXC/KeePassDX
- Synced locally via syncthing
- Set up for 2 factor authentication using HMAC-SHA1 Challenge-Response
- All clients blocked from internet access

I don't use browser extensions and I manually copy/paste my passwords to fill in entries.

KeePass has good memory protection, but the 2FA can be read from USB and doesn't change every time the database is decrypted. Vaultwarden enables the more secure FIDO2 2FA, but to my knowledge has less secure memory management as the entire entire database is decrypted on unlock.

in reply to agile_squirrel

If there's malware on your system, when you can read it, the malware can read it.
in reply to agile_squirrel

The way I see it,
Password managers protect best against website password leaks.

By making it very easy to have different passwords for everything, one password leak won't compromise your entire online portfolio.

The self managed nature of keypass and vault warden makes them less susceptible to a major fup outside your control, i.e A business can't mismanage your passwords resulting in a major leak or deletion. For better or worse, you're in charge of your own database.

They won't protect you from various malware, except maybe a key logger that doesnt know how to copy the file?
If someone actually wanted into your database without brute force, they could figure it out.
If you find malware that's been on your system for a while (longer than you download something and AV stops it before running), change all your passwords. Luckily you'll have a handy list of everything.

Edit; another advantage is if they take over the computer/steal files there's not much they can do with an encrypted password file, its better than a txt doc with all your stuff.

This entry was edited (6 days ago)
in reply to agile_squirrel

For high value accounts, use 2fa with hardware tokens if you can, and maybe use a dedicated computer (old laptop) with a bare bones software installation to minimize the likelihood of malware.
This entry was edited (6 days ago)
in reply to agile_squirrel

the entire entire database is decrypted on unlock.


That would be the selling point for me to choose KeePassXC over Vaultwarden.

in reply to agile_squirrel

This entry was edited (6 days ago)
in reply to Daniel Hall

When you login to the Vaultwarden web application it's going to exchange your passphrase for a private key.


bitwarden is end to end encrypted: your decryption keys never leave your device, and the server certainly never sees them

you must always be able to trust your network


this would be a horrible password manager. this is also not how bitwarden works

you do still need to trust your server if you use the web interface, because any web interface can serve malicious components to exfiltrate whatever they like but native apps, assuming they’re verified appropriately, could communicate over HTTP and still not allow anyone actively monitoring your network to see any data that would be particularly useful

in reply to Pup Biru

Maybe I’m misunderstanding something then, what’s the private key embedded within the client API’s profile response?
in reply to Daniel Hall

which endpoint are you referring to?

there are passwords exchanged when using the vault management API, but AFAIK that’s for local access (eg CLI talking to the app)

i’m no expert on the specifics of the API; just in the description they give: bitwarden.com/help/what-encryp…

Bitwarden always encrypts and/or hashes your data on your local device before anything is sent to cloud servers for storage. Bitwarden servers are only used for storing encrypted data.

PBKDF2 SHA-256 is used to derive the
encryption key from your master password


this is exactly the way this should be done. any deviation from this formula by a password manager with a server component should be viewed with extreme scepticism

in reply to agile_squirrel

I don't use browser extensions and I manually copy/paste my passwords to fill in entries.


On most systems copy pasting is heavily insecure since a lot of processes have access to the clipboard. autotype and thinga like browser extensions are considered more secure.

in reply to agile_squirrel

You’re thinking about this wrong.

Instead of trying to pick the one that will handle a fail state best, you can more effectively assume a fail state and take steps to mitigate it. That is to say: implement key (in your case, password) rotation.

Just establish a trusted system, log in and change your passwords periodically.

You can even do rolling rotation where you only change a few each week.

If that doesn’t seem like the right choice to you, then consider this: you’re thinking about an unconfirmed or possibly even uninvestigated situation where your secrets have been compromised. The solution isn’t to find the secret handling software that deals with this situation in the best way possible, it’s to change secrets.

in reply to agile_squirrel

If you want paranoid level security, psono is probably worth a look.