Vaultwarden 1.37.4
Overview
Vaultwarden is a lightweight, open source server that implements the Bitwarden password manager API. The official Bitwarden clients (browser extensions, desktop apps, mobile apps and the command-line client) connect to it as a self-hosted server. The bundled web vault gives you the same vault in a browser.
This guide covers the Vaultwarden 1.37.4 on Ubuntu 24.04 AMI from SecureAnyCloud on Amazon EC2. It is one version of the SecureAnyCloud identity, secrets and PKI listing on AWS Marketplace. You pick it as the software version when you subscribe and launch. Vaults are encrypted on the client, so the server stores only encrypted data and never sees your master password.
What you get:
- nginx in front, Vaultwarden behind it. nginx is the only public listener, on ports 80 and 443. Vaultwarden listens on the loopback address
127.0.0.1:8000only. WebSocket notifications (live sync between your devices) run on the same HTTPS address. - HTTPS from the first boot. nginx serves Vaultwarden with a certificate generated on your instance's first boot (an end-entity certificate, not a certificate authority), and port 80 redirects to HTTPS. The instance's name is set from its own EC2 public DNS name at first boot. You can change it to your own domain.
- Invite-only accounts. Open registration is off (
SIGNUPS_ALLOWED=false). Organisation and emergency-access invitations of unknown addresses are off (INVITATIONS_ALLOWED=false), and nginx refuses the registration endpoints on the public address. Only the admin panel invites people, and every account is created through an SSH tunnel to the instance, so nobody on the internet can register an invited address before its owner. For someone who cannot use SSH, you can open a short registration window that admits only that person's IP address and closes by itself. - A per-instance admin token, stored as a hash. The admin panel (
/admin) is protected by a random token generated on your instance's first boot. Vaultwarden reads only its Argon2id hash, from a file that only thevaultwardenuser can read. The token itself is in a root-only file for you. Admin sign-ins are rate limited per client address (3 attempts per 5 minutes). - No default login, nothing shared. The admin token, the RSA key Vaultwarden signs login tokens with, and the TLS key are generated on the first boot of each instance. The image contains no database, no key and no certificate. Vaultwarden and nginx refuse to start until first boot has created them.
- Real client addresses, fixed host name. nginx passes the real TCP peer to Vaultwarden by overwriting
X-Real-IPandX-Forwarded-For, so forged headers cannot fool rate limits and logs. Vaultwarden receives the configured name, never the name a client sends, and requests for any other host name are dropped. - Locked-down serving. Only TLS 1.2 and 1.3 are accepted. Cross-site requests and WebSocket connections from other websites are refused, while the Bitwarden apps and browser extensions are allowed. The website-icon fetcher refuses private, link-local and metadata addresses. nginx's access log records no query strings, because they can carry login tokens. No mail server, push relay or single sign-on is configured until you add one. Vaultwarden, nginx and the first-boot service are blocked from the instance metadata service, and the AMI requires IMDSv2.
- Your data on its own disk. The database, attachments, icon cache and keys live on a separate 20 GiB EBS volume mounted at
/var/lib/vaultwarden. - Built from source and verified, on fully patched Ubuntu 24.04 LTS at build time, with unattended security upgrades switched on. Step 15 shows exactly how the binary is built.
The image contains Vaultwarden 1.37.4 (a SecureAnyCloud build of the upstream 1.37.4 tag, at /usr/local/bin/vaultwarden), the official Vaultwarden web vault 2026.7.0 (at /usr/share/vaultwarden/web-vault), nginx, Ubuntu 24.04 LTS, cloud-init and the AWS Systems Manager agent.
Default user: ubuntu. Architecture: x86_64. Recommended instance type: m5.large.
Prerequisites
- An AWS account subscribed to the listing, an EC2 key pair, and a VPC subnet with a route to the internet (or a private route that your users and devices use).
- A security group that allows TCP 22 (SSH, also used for the account-creation tunnel) from your own networks only. It must also allow TCP 443 (the web vault, the apps and the admin panel) and TCP 80 (redirects to HTTPS) from the networks your users connect from. Do not open 8000: Vaultwarden listens on the loopback address only.
- For production, a DNS name you control (for example
vault.example.com) and, ideally, a certificate from a certificate authority. Until then, the instance uses its EC2 public DNS name with its own self-signed certificate.
Launch the instance
In the AWS Marketplace listing, choose Continue to Subscribe, then Continue to Configuration. Pick Vaultwarden 1.37.4 on Ubuntu 24.04 as the software version, select your Region, and choose Launch through EC2.
Choose m5.large, your key pair and a security group as described above. The AMI already carries the 20 GiB data volume, and you can make it larger on the launch page.
To launch with the AWS CLI instead, replace the values in angle brackets:
aws ec2 run-instances --image-id <ami-id-from-the-listing> --instance-type m5.large \
--key-name <your-key-pair> --security-group-ids <your-security-group> --subnet-id <your-subnet> \
--metadata-options HttpTokens=required,HttpEndpoint=enabled \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=vaultwarden}]'First boot takes a few seconds after the instance is running. To use your own name from the start, put it in /etc/sac/vaultwarden-domain with user data, for example a cloud-init write_files entry.
Otherwise, first boot uses the instance's public DNS name, or its public IP address if it has no DNS name.
Connect to your instance
Connect over SSH as the ubuntu user on Ubuntu 24.04, with the key pair you launched with.
ssh -i <your-key.pem> ubuntu@<public-ip>Check the services
systemctl is-active vaultwarden-firstboot vaultwarden nginxactive active activeConfirm that only SSH, HTTP and HTTPS are public. Vaultwarden listens on the loopback address.
sudo ss -tln | grep -E ':(22|80|443|8000) 'LISTEN 0 128 127.0.0.1:8000 0.0.0.0:* LISTEN 0 511 0.0.0.0:80 0.0.0.0:* LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* LISTEN 0 511 0.0.0.0:443 0.0.0.0:* LISTEN 0 511 [::]:80 [::]:* LISTEN 0 4096 [::]:22 [::]:* LISTEN 0 511 [::]:443 [::]:*Check that Vaultwarden answers its health check through nginx, and print its version and the web vault's version.
curl -sk https://127.0.0.1/alive; echo
sudo bash -c 'set -a; . /etc/vaultwarden/vaultwarden.env; /usr/local/bin/vaultwarden --version'"2026-10-29T02:27:54.375423Z" Vaultwarden 1.37.4 Web-Vault 2026.7.0Get the admin token and the certificate fingerprint
sudo cat /root/vaultwarden-credentials.txtThe file is root-only (mode 0600). It lists the web vault and admin panel addresses, this instance's admin token (shown here as <redacted>) and the SHA-256 fingerprint of its certificate, followed by a short how-to.
# Vaultwarden 1.37.4 - generated on first boot by vaultwarden-firstboot.service. Unique to this instance. Store it safely. vaultwarden.url=https://ec2-54-89-240-83.compute-1.amazonaws.com/ vaultwarden.admin_url=https://ec2-54-89-240-83.compute-1.amazonaws.com/admin vaultwarden.admin_token=<redacted> vaultwarden.tls.sha256_fingerprint=A9:64:22:B7:ED:88:BC:4D:2B:F0:11:ED:54:C1:66:6C:B7:A9:F1:60:2C:72:BD:3D:7E:BB:60:E5:55:67:5F:C7Every instance gets its own token. Vaultwarden never holds the token itself, only its Argon2id hash. Verify the settings and the hash file:
sudo grep -E '^(DOMAIN|SIGNUPS_ALLOWED|SIGNUPS_DOMAINS_WHITELIST|INVITATIONS_ALLOWED|ADMIN_TOKEN_FILE)=' /etc/vaultwarden/vaultwarden.env
sudo stat -c '%a %U %n' /var/lib/vaultwarden/secrets/admin-token.phc
sudo cut -c1-31 /var/lib/vaultwarden/secrets/admin-token.phcDOMAIN=https://ec2-54-89-240-83.compute-1.amazonaws.com SIGNUPS_ALLOWED=false SIGNUPS_DOMAINS_WHITELIST= INVITATIONS_ALLOWED=false ADMIN_TOKEN_FILE=/var/lib/vaultwarden/secrets/admin-token.phc 600 vaultwarden /var/lib/vaultwarden/secrets/admin-token.phc $argon2id$v=19$m=19456,t=2,p=1$The certificate is self-signed and unique to your instance, so your browser warns about it. Open the certificate details in the browser and check that its SHA-256 fingerprint matches vaultwarden.tls.sha256_fingerprint. Only then continue.
Do not add the certificate to your operating system's trust store. For production, replace it with a certificate from a certificate authority (Step 11). The Bitwarden mobile apps and browser extensions need a certificate they trust, so plan a real certificate before you roll the server out to people.
Invite yourself in the admin panel
Browse to the vaultwarden.admin_url address and sign in with vaultwarden.admin_token.
Open Users, type your email address under Invite User and choose Invite. No mail server is configured, so nothing is sent. The invitation simply allows that one address to create an account. The user appears as Invited.
The admin session expires after 20 minutes. After three wrong tokens from one address, the panel refuses further sign-ins from that address for five minutes.
Create your account through an SSH tunnel
Registration is closed on the public address, even for an invited address. If you try the Create account page at vaultwarden.url, the web vault shows an error because nginx refuses the request (HTTP 403).
Create the first account through the instance's loopback listener instead, which only your SSH key can reach. On your workstation, open a tunnel:
ssh -i <your-key.pem> -N -L 8443:127.0.0.1:443 ubuntu@<public-ip>Leave the tunnel running and browse to https://localhost:8443/#/signup. It presents the same certificate, so check the same fingerprint. Enter the address you invited and your name, then choose Continue.
Set a strong master password and choose Create account. The web vault derives your encryption keys from the password in the browser. The server never receives it, and nobody can recover it, including SecureAnyCloud and the admin panel.
Accounts stay invite-only even on the tunnel, because Vaultwarden itself refuses an address nobody invited. Use the same tunnel for every account you create, not only the first. With no mail server configured, an invitation carries no secret, so the person who registers an invited address first chooses its master password.
Sign in and use your vault
Close the tunnel and sign in at vaultwarden.url with your email address and master password.
The first time, the web vault offers the Bitwarden browser extension. If you do not want it now, choose Add it later and Skip to web app. Then choose New, then Login, and save an item.
To use the Bitwarden apps, choose Self-hosted (or the server settings icon) on their sign-in screen. Enter vaultwarden.url as the server URL.
Add more users
Invite each person in the admin panel (Step 5). The recommended way for them to create their account is the same SSH tunnel (Step 6). Either they use it themselves, or you sit with them on a machine that has your key. Registration through the tunnel never needs the public address.
If someone cannot use SSH, open a short public registration window that admits only their IP address. Ask them for their public address, for example from a "what is my IP" page. Then tell them to sign up at vaultwarden.url.
sudo vaultwarden-signups open 30 --from <their-public-ip>Public registration OPEN for 203.0.113.25/32 only, for 30 minutes (closes 2026-10-29T02:58:40Z). Invite users in /admin first.--from is required. It takes one IPv4 or IPv6 address, or a network no larger than a /16 (IPv4) or /48 (IPv6). A window for everyone is refused.
sudo vaultwarden-signups open 30 --from 0.0.0.0/0; echo "exit $?"0.0.0.0/0 would open registration to everyone vaultwarden-signups: ERROR: refused --from '0.0.0.0/0' exit 1nginx checks the address of the actual network connection, so a forwarded header cannot get around it. Even inside the window, only invited addresses can register. The window closes by itself, at any nginx restart, or when you close it.
sudo vaultwarden-signups close vaultwarden-signups statusPublic registration CLOSED (registration through the SSH tunnel still works). closedPeople who already have an account can be added to organisations from the web vault as usual.
To remove someone, use Delete User (or Disable User) in the admin panel. The panel asks you to type the user's email address to confirm, and the account can no longer sign in.
Check the server from the command line
Run one command on the instance to check the whole chain. It confirms that:
- The web vault and health check answer over HTTPS.
- The admin token signs in, with a session cookie that is HttpOnly and SameSite=Strict, and a wrong token is refused.
- nginx refuses public registration.
- Vaultwarden refuses a registration for an address nobody invited.
sudo /usr/local/sbin/vaultwarden-cred-roundtrip.shVAULTWARDEN_ROUNDTRIP_OK alive=200 webvault=200 admin=200 users=200 wrong-token=401 public-register=403 uninvited-register=400Show the configured name and every name the instance answers to.
vaultwarden-set-domain --showdomain: ec2-54-89-240-83.compute-1.amazonaws.com web vault: https://ec2-54-89-240-83.compute-1.amazonaws.com/ admin panel: https://ec2-54-89-240-83.compute-1.amazonaws.com/admin also served: ec2-54-89-240-83.compute-1.amazonaws.com 54.89.240.83 172.31.84.251 certificate: SHA-256 A9:64:22:B7:ED:88:BC:4D:2B:F0:11:ED:54:C1:66:6C:B7:A9:F1:60:2C:72:BD:3D:7E:BB:60:E5:55:67:5F:C7Check the security posture
Inspect the certificate. It is an end-entity certificate for the instance's name and addresses, plus localhost for the tunnel, and it cannot sign other certificates.
openssl x509 -in /etc/ssl/vaultwarden/vaultwarden.crt -noout -subject -ext basicConstraints,keyUsage,extendedKeyUsage,subjectAltNamesubject=CN = ec2-54-89-240-83.compute-1.amazonaws.com, O = sac X509v3 Subject Alternative Name: DNS:ec2-54-89-240-83.compute-1.amazonaws.com, IP Address:54.89.240.83, IP Address:172.31.84.251, DNS:localhost, IP Address:127.0.0.1 X509v3 Basic Constraints: critical CA:FALSE X509v3 Key Usage: critical Digital Signature, Key Encipherment X509v3 Extended Key Usage: TLS Web Server AuthenticationThe server refuses TLS 1.0 and 1.1, and a request for a host name the instance does not serve gets no answer.
echo | openssl s_client -tls1_1 -cipher 'DEFAULT@SECLEVEL=0' -connect 127.0.0.1:443 2>&1 | grep -o 'alert protocol version' | head -1 code=$(curl -sk -o /dev/null -w '%{http_code}' -H 'Host: evil.example' "https://$(hostname -I | awk '{print $1}')/alive" || true);
echo "$code"; [ "$code" = 000 ]alert protocol version 000nginx passes the real client address to Vaultwarden and never a client-supplied one.
grep -E 'proxy_set_header +X-(Real-IP|Forwarded-For)' /etc/nginx/sites-available/vaultwarden | sort -uproxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr;The services are blocked from the instance metadata service. The first command shows the systemd rule on each service. The second makes a metadata request from inside Vaultwarden's own service, as its user, and gets no connection (000).
systemctl show -p IPAddressDeny vaultwarden nginx vaultwarden-firstboot
sudo bash -c 'cg=$(systemctl show -p ControlGroup --value vaultwarden.service); echo $$ > /sys/fs/cgroup$cg/cgroup.procs; setpriv --reuid=vaultwarden --regid=vaultwarden --init-groups curl -s -m 5 -o /dev/null -w "imds from vaultwarden: %{http_code}\n" -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 60" http://169.254.169.254/latest/api/token; true' | grep -x 'imds from vaultwarden: 000'IPAddressDeny=fd00:ec2::254/128 ::ffff:169.254.169.254/128 169.254.169.254/32 168.63.129.16/32 IPAddressDeny=fd00:ec2::254/128 ::ffff:169.254.169.254/128 169.254.169.254/32 168.63.129.16/32 IPAddressDeny=fd00:ec2::254/128 ::ffff:169.254.169.254/128 169.254.169.254/32 168.63.129.16/32 imds from vaultwarden: 000Vaultwarden fetches website icons for the vault on request. It refuses to fetch from any private, link-local or metadata address, even through a name that resolves to one.
S=$(date '+%Y-%m-%d %H:%M:%S'); curl -sk -o /dev/null https://127.0.0.1/icons/169.254.169.254.nip.io/icon.png; sleep 1
sudo journalctl -u vaultwarden --since "$S" --no-pager -o cat | grep -o "IP 169.254.169.254 for domain .* is not a global IP!"IP 169.254.169.254 for domain '169.254.169.254.nip.io' is not a global IP!SSH accepts keys only.
sudo sshd -T | grep -E '^(permitrootlogin|passwordauthentication|kbdinteractiveauthentication|x11forwarding|permitemptypasswords) 'permitrootlogin no passwordauthentication no kbdinteractiveauthentication no x11forwarding no permitemptypasswords noUse your own domain and certificate
Point a DNS record (for example vault.example.com) at the instance's public or Elastic IP address, then run:
sudo vaultwarden-set-domain vault.example.comThis command sets DOMAIN=https://vault.example.com and pins nginx to that name, while the instance's own addresses keep working. If the current certificate is SecureAnyCloud's, it issues a new self-signed certificate for the name. It then restarts Vaultwarden.
To use a certificate from a certificate authority, put the certificate chain in /etc/ssl/vaultwarden/vaultwarden.crt and its key in /etc/ssl/vaultwarden/vaultwarden.key (owner root, key mode 0600). Then run sudo systemctl reload nginx. vaultwarden-set-domain never replaces a certificate that is not SecureAnyCloud's.
With a trusted certificate you can also add an HSTS header in /etc/nginx/sites-available/vaultwarden. vaultwarden-set-domain re-renders that file, so keep a copy of local changes.
Admin token, mail and two-step login
- New admin token:
sudo vaultwarden-admin-token rotategenerates a new token, stores only its hash for Vaultwarden, updates/root/vaultwarden-credentials.txtand restarts Vaultwarden. Admin sessions that are already open stay valid until they expire, after at most 20 minutes. - Mail: without a mail server, Vaultwarden cannot send invitations, verification emails or email two-step codes. To add one, set the SMTP settings in the admin panel under Settings, SMTP Email Settings. Settings saved in the admin panel are stored in
/var/lib/vaultwarden/data/config.jsonand override/etc/vaultwarden/vaultwarden.env. Keep Allow new signups off, because with mail configured, invitations are sent as email links. - Two-step login: every user can turn on an authenticator app, a security key or other methods in the web vault, under Settings, Security, Two-step login. A security key (WebAuthn) needs your own domain name and a trusted certificate. We recommend two-step login for everyone.
Your data and backups
Everything Vaultwarden keeps is on the data volume at /var/lib/vaultwarden.
sudo ls -l /var/lib/vaultwarden /var/lib/vaultwarden/data /var/lib/vaultwarden/secrets df -h /var/lib/vaultwarden | tail -1/var/lib/vaultwarden: total 24 drwx------ 4 vaultwarden vaultwarden 4096 Oct 29 02:28 data drwx------ 2 root root 16384 Oct 29 01:41 lost+found drwx------ 2 vaultwarden vaultwarden 4096 Oct 29 02:23 secrets /var/lib/vaultwarden/data: total 484 -rw------- 1 vaultwarden vaultwarden 278528 Oct 29 02:23 db.sqlite3 -rw------- 1 vaultwarden vaultwarden 32768 Oct 29 02:27 db.sqlite3-shm -rw------- 1 vaultwarden vaultwarden 168952 Oct 29 02:27 db.sqlite3-wal drwx------ 2 vaultwarden vaultwarden 4096 Oct 29 02:28 icon_cache -rw------- 1 vaultwarden vaultwarden 1679 Oct 29 02:23 rsa_key.pem drwx------ 2 vaultwarden vaultwarden 4096 Oct 29 02:23 tmp /var/lib/vaultwarden/secrets: total 4 -rw------- 1 vaultwarden vaultwarden 119 Oct 29 02:23 admin-token.phc /dev/nvme1n1 20G 520K 19G 1% /var/lib/vaultwardendata/db.sqlite3(with its-waland-shmfiles): users, organisations and the encrypted vaults. Attachments and Send files appear underdata/when you use them.data/rsa_key.pem: signs login tokens. Keep it with the database, because a new key signs every device out.secrets/admin-token.phc: the admin token's hash.
Back up the volume with EBS snapshots (AWS Backup or Data Lifecycle Manager). Alternatively, use Backup Database in the admin panel, or copy the folders while Vaultwarden is stopped.
sudo systemctl stop vaultwarden && sudo tar -C /var/lib/vaultwarden -czf /root/vaultwarden-backup-$(date +%F).tar.gz data secrets && sudo systemctl start vaultwarden
sudo tar -tzf /root/vaultwarden-backup-$(date +%F).tar.gz | head -20data/ data/tmp/ data/db.sqlite3-shm data/icon_cache/ data/db.sqlite3 data/rsa_key.pem data/db.sqlite3-wal secrets/ secrets/admin-token.phcTo restore, stop Vaultwarden, extract the archive into /var/lib/vaultwarden (owner vaultwarden, folders mode 0700) and start it again.
The vault data is encrypted with your users' master passwords, but treat backups as secrets anyway.
Server components
- Vaultwarden 1.37.4: /usr/local/bin/vaultwarden, unit vaultwarden.service, user vaultwarden, 127.0.0.1:8000
- Web vault 2026.7.0: /usr/share/vaultwarden/web-vault (read-only, owner root)
- Configuration: /etc/vaultwarden/vaultwarden.env (0600, no secrets: the admin token hash is read from ADMIN_TOKEN_FILE)
- Data: /var/lib/vaultwarden (own EBS volume)
- nginx: site in /etc/nginx/sites-available/vaultwarden, host and Origin rules in /etc/nginx/sac/, certificate in /etc/ssl/vaultwarden/
- Helpers: vaultwarden-set-domain, vaultwarden-signups, vaultwarden-admin-token and vaultwarden-cred-roundtrip.sh in /usr/local/sbin
- First boot: vaultwarden-firstboot.service, /usr/local/sbin/vaultwarden-firstboot.sh
- Licences and build record: /usr/share/doc/sac-vaultwarden/
- Logs: journalctl -u vaultwarden, /var/log/nginx/
Ubuntu packages update automatically through unattended upgrades.
To move to a later Vaultwarden release, back up the data volume first. Replace /usr/local/bin/vaultwarden with a build of the new release (owner root, mode 0755), and replace the web vault folder with the matching bw_web_builds release. Read the release notes, then restart Vaultwarden. It migrates the database on start.
The simplest route is a newer SecureAnyCloud version of this image: launch it, restore your backup and switch DNS.
Licences and source
Vaultwarden is licensed under the GNU Affero General Public License v3.0 only, and the web vault under the GNU General Public License v3.0. The image carries both licences, the build record and the exact dependency lock file in /usr/share/doc/sac-vaultwarden/.
ls /usr/share/doc/sac-vaultwarden/ head -3 /usr/share/doc/sac-vaultwarden/BUILD-INFOBUILD-INFO Cargo.lock LICENSE-vaultwarden-AGPL-3.0.txt LICENSE-web-vault-GPL-3.0.txt SOURCE.txt rust-dependencies.txt Vaultwarden 1.37.4 - sac build of the pinned upstream tag (no source patch) source: https://github.com/dani-garcia/vaultwarden.git tag 1.37.4 commit 7c188967e7a467b19b2757bc3326f9cf3ccae327 (AGPL-3.0-only) toolchain: rustc 1.99.1 (58cf8f9c3 2026-10-13) (rustup 1.29.2, profile minimal; the tag pins 1.99.0)- Server source: github.com/dani-garcia/vaultwarden at tag 1.37.4, built unmodified with
cargo build --release --locked --features sqliteand Rust 1.99.1. The only difference from the upstream tree isCargo.lock: eight dependencies are raised to newer releases of the same versions (ctutils0.4.6,rustls0.23.46,rustls-webpki0.103.16,tokio1.53.3,webpki-root-certs1.0.11,zstd0.14.3,zstd-safe8.2.0,zstd-sys2.1.2) to clear published security advisories. The shipped lock file is in/usr/share/doc/sac-vaultwarden/Cargo.lock.
- Web vault source: github.com/dani-garcia/bw_web_builds at v2026.7.0; the image ships the official v2026.7.0 release byte for byte.
Security notes
- Keep port 22 open to your own networks only, and never open 8000. Consider limiting 443 to the networks your users connect from.
- Keep Allow new signups off in the admin panel and use invitations. Create accounts through the SSH tunnel. Open a registration window (Step 8) only for one person's address, and only while you expect them to sign up.
- Store the admin token somewhere safe, and rotate it (Step 12) after sharing it. Optionally, restrict
/adminto the SSH tunnel by adding anallow/denyrule forlocation /adminin the nginx site. - For production, use a certificate from a certificate authority and your own domain. The Bitwarden mobile apps and browser extensions need a certificate that their device trusts.
- Known residual advisories (reviewed for this release):
rsa0.9.10 (RUSTSEC-2023-0071, "Marvin", Medium, no fixed release anywhere): Vaultwarden uses it only to sign its own login tokens with RSA-PKCS#1 v1.5, and there is no RSA decryption path. Exploiting a timing side channel would need large numbers of authenticated sign-ins and precise network timing.rustls0.21 andrustls-webpki0.101 (RUSTSEC-2026-0346, -0349, -0098, -0099, -0104, -0382): these exist only inside Rocket's built-in TLS server, which this image does not use. nginx terminates TLS, and Rocket serves plain HTTP on the loopback address. Not reachable.crypto-bigint0.5 (RUSTSEC-2026-0387): used only on elliptic-curve token paths. Vaultwarden accepts RS256 tokens only, and single sign-on is off. Not reachable.- Web vault 2026.7.0: the High-rated Angular 21.2.17 advisories apply to server-side rendering or to compile-time translation files, and the browser-only web vault uses neither. Medium-rated Angular (CVE-2026-88057) and
qsadvisories remain in the client bundle.node-forge(CVE-2026-85393, signature verification) is in the bundle, but the web vault never verifies RSA signatures with it.
Support
SecureAnyCloud provides 24/7 technical support for this image by email and live chat: sales@secureanycloud.com.
Vaultwarden and Bitwarden are trademarks of their respective owners. SecureAnyCloud is not affiliated with or endorsed by them. Vaultwarden is an unofficial Bitwarden-compatible server, so report server issues to SecureAnyCloud or the Vaultwarden project, not to Bitwarden.
Deploy on AWS
Launch Vaultwarden 1.37.4 on Ubuntu 24.04 on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com