
إثبات مفهوم لاستغلال ثغرة XenForo CVE-2026-73318، وهي تجاوز للتفويض يسمح لمسؤولي لوحة التحكم (ACP) بفرض إعادة الموافقة على السياسة على مستوى الموقع بالكامل. يتضمن خطوات إعادة الإنتاج وسكربت بلغة بايثون.
XenForo قبل الإصدار 2.3.13 يسمح لأي مسؤول ACP بتفعيل إعادة الموافقة على سياسة الخصوصية والشروط على مستوى الموقع بأكمله.
إدخالات التنقل في ACP مقصورة على المسؤولين الذين يمتلكون صلاحية option، لكن ForceAgreementController لا يفرض تلك الصلاحية. الطلبات المباشرة من أي مسؤول ACP مصادق عليه تصل إلى كلا النموذجين وإجراءات POST الخاصة بهما التي تغيّر الحالة.
تقوم الإجراءات بتحديث الطوابع الزمنية للسياسة العامة. المستخدمون الذين تكون موافقتهم المسجلة أقدم من تلك القيم يُجبرون على المرور عبر بوابة الموافقة المقابلة. لا يسمح الخطأ للمسؤول المحدود بتحرير نص السياسة؛ بل يسمح له بتفعيل سير عمل إعادة الموافقة على مستوى المنتدى خارج دوره المعيّن.
أعدت إنتاج هذا على XenForo 2.3.12 (build 2031270) باستخدام مسؤول غير خارق يمتلك فقط صلاحية ACP غير ذات صلة. تلقى الحساب HTTP 403 من Options لكنه تلقى HTTP 200 من كلا مساري force-agreement. يحتوي XenForo 2.3.13 على الإصلاح.
python poc.py https://xenforo.example LIMITED_ADMIN --confirm
تُقرأ كلمة المرور عبر موجه مخفي. يؤدي هذا إلى تغيير طابعين زمنيين عامين. استخدم منتدى معزولًا، وسجّل القيم الأصلية، واستعدها بعد الاختبار.
اكتشفه ماركو باتشيوروني (BomboBombone).