
استغلال إعادة تعيين كلمة المرور دون مصادقة لـ Flowise AI الإصدار 3.0.5 فأقل. يساء استخدام نقطة النهاية `/api/v1/account/forgot-password` لتغيير كلمة مرور أي مستخدم دون مصادقة مسبقة. يتضمن نصًا برهانيًا وإرشادات التخفيف.
معرف CVE: CVE-2025-58434
البرنامج المتأثر: Flowise AI
الإصدارات الضعيفة: <= 3.0.5
الإصدار المُصحح: 3.0.6 وما بعده
الخطورة: حرجة
المؤلف: r3nsi15
التاريخ: 2025
تحتوي إصدارات Flowise AI حتى 3.0.5 على خلل في آلية المصادقة في عملية إعادة تعيين كلمة المرور. يقوم نقطة النهاية /api/v1/account/forgot-password بإرجاع رمز إعادة تعيين مؤقت (tempToken) مباشرة في استجابة API دون الحاجة إلى أي شكل من أشكال المصادقة المسبقة أو التحقق عبر البريد الإلكتروني.
يمكن لمهاجم غير مصادق يعرف (أو يستطيع تعداد) عنوان بريد إلكتروني صحيح أن:
tempToken مباشرة من استجابة API.تتجاوز هذه الثغرة عملية التحقق المعتمدة على البريد الإلكتروني بالكامل، حيث يتم تسريب الرمز في استجابة HTTP بدلاً من إرساله فقط إلى صندوق البريد الإلكتروني لصاحب الحساب.
الملف: CVE-2025-58434_POC.py
requestspip install requests
python3 CVE-2025-58434_POC.py -e <target_email> -u <target_url> [-p <new_password>]
python3 CVE-2025-58434_POC.py -e [email protected] -u https://flowise.example.com -p P@ssw0rd!
[+] Email [email protected] exists!
[!] Sending forgot password request
[!] Sending reset password request
[+] Password Changed Successfully to: P@ssw0rd!
تم تصميم API إعادة تعيين كلمة المرور لإرسال tempToken إلى البريد الإلكتروني للمستخدم، لكن الخادم قام أيضًا بتضمينه مباشرة في نص استجابة JSON. وهذا يعني أن أي مستدعي — سواء كان مصادقًا أم لا — يتلقى الرمز فور تقديم الطلب، مما يجعل خطوة تسليم البريد الإلكتروني غير ذات صلة.
بالإضافة إلى ذلك، يمكن تعداد البريد الإلكتروني لأن نقطة نهاية تسجيل الدخول تُرجع رسالة خطأ مميزة ("Incorrect Email or Password") فقط عند وجود البريد الإلكتروني، مما يجعل تأكيد الحسابات الصالحة أمرًا تافهًا قبل شن الهجوم.
tempToken حصريًا عبر عنوان البريد الإلكتروني المسجل.تم توفير إثبات المفهوم هذا لأغراض التعليم والبحث الأمني المصرح به فقط. استخدام هذا البرنامج النصي ضد الأنظمة دون إذن كتابي صريح غير قانوني وغير أخلاقي. لا يتحمل المؤلف والمساهمون أي مسؤولية عن سوء الاستخدام.
| نقطة النهاية | الطريقة | الغرض |
|---|
/api/v1/auth/login | POST | يُستخدم للتحقق من وجود حساب البريد الإلكتروني |
/api/v1/account/forgot-password | POST | يُشغل إعادة التعيين ويُسرب tempToken في الاستجابة |
/api/v1/account/reset-password | POST | يُكمل تغيير كلمة المرور باستخدام الرمز |
| العلم | الصيغة الطويلة | مطلوب | الوصف |
|---|
-e | --email | نعم | عنوان البريد الإلكتروني للحساب المستهدف |
-u | --url | نعم | عنوان URL الأساسي لمثيل Flowise |
-p | --password | لا | كلمة المرور الجديدة لتعيينها (الافتراضي: password) |