
إثبات المفهوم والتقرير الفني لثغرة CVE-2026-73310، وهي خلل في ربط URI إعادة التوجيه لرمز تفويض OAuth2 في XenForo قبل الإصدار 2.3.13، بما في ذلك خطوات إعادة الإنتاج وسكربت PoC بلغة Python.
لا يقوم XenForo قبل الإصدار 2.3.13 بربط رمز تفويض OAuth2 بمعرّف URI لإعادة التوجيه المستخدم عند إصدار ذلك الرمز.
في نقطة نهاية الرمز المميز، يتحقق XenForo من أن redirect_uri المُرسل موجود في قائمة السماح الخاصة بالعميل. ولا يقارن القيمة مع معرّف URI لإعادة التوجيه المخزّن في طلب التفويض. وبالتالي، يمكن لعميل لديه عمليات استدعاء A وB التفويض عبر A واسترداد الرمز مع الادعاء بأنه B.
يجب أن يتحكم المهاجم في رمز صالح أو يراقبه، بالإضافة إلى استدعاء مختلف مسجّل مسبقًا لنفس العميل. لا يُنشئ هذا الخطأ رمزًا ولا يضيف معرّف URI جديدًا لإعادة التوجيه. بل يُضعف الربط بين تفويض القناة الأمامية وتبادل الرمز المميز.
أعدت إنتاج عدم التطابق على XenForo 2.3.12 (build 2031270): أصدر الاستدعاء A الرمز، وتبادله الاستدعاء B، وتمت مصادقة الرمز المميز الناتج كمستخدم مُفوَّض. يحتوي XenForo 2.3.13 على الإصلاح.
python poc.py https://xenforo.example CLIENT_ID AUTHORIZATION_CODE https://client.example/callback-b --code-verifier VERIFIER
أضف --client-secret فقط لعميل اختبار سري. يقوم البرنامج النصي بتجزئة الرموز المميزة المُعادة ويُبلغ فقط عما إذا كان /api/me قد قبلها.
استخدم استدعاءين ومنحة OAuth مؤقتة تملكها. يقبل التثبيت الضعيف الاستدعاء B؛ بينما يرفض التثبيت المُصلَح عدم التطابق.
اكتشفه ماركو باتشيوروني (BomboBombone).