
تقرير مُنقّى ونص إثبات مفهوم محلي يوضح تجاوز خطاف EmailUserAuthorizeSend في واجهة برمجة تطبيقات MediaWiki action=emailuser (CVE-2026-102973).
المُبلِّغ: Marco Paciaroni (BomboBombone).
لم يستدعِ مسار واجهة API action=emailuser في MediaWiki الخطاف EmailUserAuthorizeSend. عندما استخدم امتداد أو سياسة موقع ذلك الخطاف لرفض مُرسِل، فرض نموذج الويب الرفض بينما كان مسار واجهة API لا يزال قادرًا على إرسال الرسالة.
يعتمد هذا على الإعدادات. وهو يؤثر على الويكي فقط عندما تستخدم سياسة محلية أو امتداد الخطاف EmailUserAuthorizeSend كأداة تحكم في التفويض. لا يوفّر إعداد النواة الافتراضي خطاف رفض بحد ذاته. كما يحتاج الحساب المتأثر إلى صلاحية إرسال البريد الإلكتروني العادية.
قم بإعداد ويكي اختبار محلي معزول بخطاف مؤقت يرفض مُرسِلًا مخصصًا للاختبار، واضبط بريد MediaWiki ليُسلِّم فقط إلى خزان SMTP محلي مثل Mailpit. أنشئ حساب مستلم مخصصًا لذلك الخزان. يقارن السكربت بين نموذج الويب المرفوض وطلب واجهة API ويُبلِّغ عمّا إذا كانت واجهة API قد تخطّت خطاف السياسة.
يرفض السكربت عناوين URL للويكي غير المحلية (non-loopback)، ويتطلب علامة تأكيد صريحة لـ SMTP المحلي وتأكيدًا مكتوبًا، ويطلب كلمة مرور المُرسِل. لا تستخدم ويكي مُهيَّأ لإرسال البريد خارجيًا.
python poc.py --base http://127.0.0.1:8080 --username PolicyTestSender --target CVE102973TestRecipient --confirm-local-smtp
يجب أن تحتوي رسالة الرفض الخاصة بالخطاف على email-policy-denied (العلامة الافتراضية). يحتاج المُرسِل إلى الصلاحية العادية sendemail، ويجب أن يستخدم المستلم عنوان الخزان المحلي.