
إثبات مفهوم لاستغلال CVE-2026-25050، وهو هجوم توقيتي يتيح تعداد المستخدمين عبر مصادقة GraphQL. يقيس أوقات الاستجابة لتحديد الحسابات الموجودة، مما يسهل الهجمات الموجّهة.
يحتوي هذا المستودع على إثبات مفهوم يوضح هجوم توقيت يؤثر على طريقة NativeAuthenticationStrategy.authenticate().
يُقدَّم هذا الإثبات كـ عرض تقني لأغراض المدونات / البحث.
يعيد منطق المصادقة النتيجة فورًا عندما لا يكون المستخدم موجودًا، بينما يقوم بالتحقق المكلف من تجزئة كلمة المرور عندما يكون المستخدم موجودًا.
const user = await this.userService.getUserByEmailAddress(ctx, data.username);
if (!user) {
return false;
}
const passwordMatch = await this.verifyUserPassword(ctx, user.id, data.password);
يؤدي هذا إلى إنشاء فرق زمني قابل للقياس بين محاولات المصادقة للمستخدمين الموجودين وغير الموجودين.
من خلال قياس أوقات الاستجابة عبر طلبات متعددة، يمكن للمهاجم تحديد ما إذا كان اسم المستخدم (عنوان البريد الإلكتروني) موجودًا بشكل موثوق.
يقوم هذا الإثبات بتنفيذ محاولات مصادقة متعددة لكل اسم مستخدم ويحسب متوسط وقت الاستجابة لتصنيف الحسابات إلى:
python3 exploit.py -u http://target.tld -w users.txt
تقوم الأداة تلقائيًا بإلحاق نقطة النهاية الضعيفة:
/admin-api?languageCode=en
-u, --url عنوان URL الأساسي للهدف
-w, --wordlist قائمة كلمات أسماء المستخدمين / البريد الإلكتروني
--silent الوضع الصامت (التقدم + المستخدمون الصالحون فقط)
--shuffle خلط قائمة الكلمات قبل الاختبار
--delay MIN:MAX تأخير عشوائي بين الطلبات (مللي ثانية)
--resume state.json استئناف فحص سابق
--json results.json تصدير النتائج إلى JSON
--delay في تجنب الاكتشاف وتقييد المعدل.يُقدَّم إثبات المفهوم هذا لأغراض اختبار الأمان المصرح به والأغراض التعليمية فقط. لا يتحمل المؤلف أي مسؤولية عن سوء الاستخدام.