
إثبات المفهوم والتقرير الفني لثغرة CVE-2026-73312، وهي ثغرة إعادة تشغيل رمز تحديث OAuth2 في XenForo قبل الإصدار 2.3.13. يتضمن سكربت Python لاختبار المشكلة.
يمكن لـ XenForo قبل الإصدار 2.3.13 أن يترك رمز تحديث OAuth2 قابلاً لإعادة الاستخدام عندما تنتهي صلاحية رمز الوصول الأصلي الخاص به.
يسمح XenForo عمداً لرمز التحديث بأن يعيش أطول من رمز الوصول قصير العمر الخاص به. أثناء التدوير، يقوم بإنشاء عائلة الرموز البديلة، ثم يطلب من مُلغي رمز الوصول الأصلي استهلاك العائلة القديمة. يعود هذا المُلغي مبكراً عندما يكون رمز الوصول منتهي الصلاحية، قبل إلغاء رمز التحديث المرتبط.
وبالتالي، يمكن إرسال رمز التحديث الأصلي مرة أخرى، مما ينتج عنه عائلة رموز مستقلة أخرى بنفس المستخدم ونفس النطاقات. يجب أن يمتلك المهاجم بالفعل رمز تحديث صالحاً (وسر العميل لعميل سري). المشكلة تمدد العمر الافتراضي المفيد لبيانات الاعتماد المخترقة؛ وهي ليست تجاوزاً لتسجيل الدخول أو تصعيداً للنطاقات بحد ذاتها.
أعدت إنتاج المشكلة على XenForo 2.3.12 (build 2031270) بعد السماح لرمز الوصول الأصلي بالانتهاء. يحتوي XenForo 2.3.13 على الإصلاح.
python poc.py https://xenforo.example CLIENT_ID REFRESH_TOKEN --verify-me
يُرسل البرنامج النصي رمز اختبار مصرحاً به مرتين ويطبع التجزئات والحالة فقط. يؤدي رفض إعادة التشغيل إلى الخروج بالحالة 0؛ بينما تؤدي النتيجة المؤكدة القابلة للاستغلال إلى الخروج بالحالة 1 حتى لا تخطئ الأتمتة في فهم الحالة القابلة للاستغلال على أنها نجاح.
اكتُشف بواسطة Marco Paciaroni (BomboBombone).