
CVE-2026-40776 — التحكم في الوصول المكسور + IDOR في WordPress Eventin (wp-event-solution) <= 4.1.8
كشف للبيانات الشخصية القابلة للتعريف (PII) وتزوير للطلبات دون مصادقة في البرنامج المساعد Eventin لووردبريس (أكثر من 10,000 تثبيت نشط). نقطة نهاية REST عامة تمنح أي زائر wp_rest nonce، وتقبل ثلاثة استدعاءات لاحقة لأذونات التحقق هذا الـ nonce كبديل عن المصادقة — مما ينهار التفويض في كل نقطة نهاية لطلبات العملاء.
الشرح التقني الكامل: https://lorenzofradeani.com/en/blog/cve-2026-40776 استشارة Patchstack: https://patchstack.com/database/wordpress/plugin/wp-event-solution/vulnerability/wordpress-eventin-plugin-4-1-8-broken-access-control-vulnerability
ثلاث مشكلات تتضافر لتكوين تجاوز كامل للتفويض:
core/Admin/hooks.php (الأسطر 68–77) المسار /wp-json/eventin/v1/nonce مع permission_callback => '__return_true' ويعيد wp_rest nonce مُولّدًا حديثًا إلى أي متصل غير مصادَق.core/Order/ تقبل ذلك الـ nonce باعتباره فحص التفويض الوحيد:
OrderController::get_item_permissions_check (الأسطر 146–148) — current_user_can(...) || wp_verify_nonce(...)؛ العامل || يجعل الـ nonce وحده كافيًا.OrderController::create_item_permissions_check (الأسطر 476–478) — wp_verify_nonce(...) فقط.PaymentController::create_payment_permission_check (الأسطر 66–70) — wp_verify_nonce(...) فقط.من البداية إلى النهاية، تكفي أربعة طلبات غير مصادَق عليها لتسريب كل طلبات العملاء (الأسماء الكاملة، رسائل البريد الإلكتروني، أرقام الهواتف، طرق الدفع، قائمة الحضور) ولتزوير طلبات جديدة. راجع ADVISORY.md للتحليل التقني الكامل وpoc/poc-eventin.sh للحصول على PoC قابل للتكرار.
حدّث wp-event-solution إلى 4.1.9 أو أحدث. لا يوجد حل بديل داخل نفس الإصدار للإصدارات الأقدم سوى تعطيل البرنامج المساعد أو حظر مسارات REST المتأثرة (/wp-json/eventin/v1/nonce, /wp-json/eventin/v2/orders*, /wp-json/eventin/v2/payments, /wp-json/eventin/v2/orders/book-seats) على مستوى خادم الويب / WAF.
.
├── README.md this file
├── ADVISORY.md full technical advisory + code review
├── LICENSE MIT
├── poc/
│ └── poc-eventin.sh 4-step bash PoC against a local lab
└── screenshots/
├── poc1-idor-pii-leak.png IDOR read of order #21 with full PII
├── poc2-no-nonce-blocked.png same request without nonce → 401
└── poc3-fake-order-created.png unauthenticated POST creating a fake order
نُشرت هذه المادة لأغراض دفاعية وتعليمية — لمساعدة مشغّلي مواقع ووردبريس على تحديد مدى التعرض، ولمساعدة مؤلفي الإضافات على تجنّب الخطأ نفسه (التعامل مع الـ nonce الخاص بـ CSRF كمصادقة)، ولتوثيق مثال واقعي على كيفية انهيار التفويض بسبب التقييم المختصر للعامل || في استدعاء أذونات. لا تشغّل PoC ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها.
| الحقل | القيمة |
|---|
| CVE | CVE-2026-40776 |
| Patchstack PSID | 85de025d71e7 |
| CWE | CWE-862 — Missing Authorization |
| CVSS v3.1 | 7.5 (HIGH) |
| البرنامج المساعد | Eventin — تقويم الأحداث، حجز الفعاليات، التذاكر والتسجيل (wp-event-solution) |
| الإصدارات المتأثرة | <= 4.1.8 |
| تم التصحيح في | 4.1.9 |
| التثبيتات النشطة | 10,000+ |
| المصادقة المطلوبة | لا شيء (بدون مصادقة) |
| تفاعل المستخدم | لا شيء |
| أُبلغ من قبل | Lorenzo Fradeani — بحث أمني مستقل |
| بالتنسيق مع | Patchstack |
| الكشف العام | 2026-04-29 |
OrderController::get_item (الأسطر 310–317) بتحميل أي طلب عبر معرف منشور ووردبريس تسلسلي دون التحقق من الملكية، وتستخدم /book-seats (الأسطر 129–137) permission_callback => function() { return true; } (بدون أي مصادقة).| التاريخ | الحدث |
|---|
| 2026-03-10 | أُبلغ إلى Patchstack |
| 2026-04-07 | أصدر الناشر Eventin 4.1.9 (إصلاح) |
| 2026-04-13 | مرحلة التنسيق (Patchstack) |
| 2026-04-29 | الكشف العام (استشارة Patchstack) |
| 2026-05-01 | التقطته أدوات تتبع من جهات خارجية (WP-Firewall, Managed-WP, SolidWP) |
| 2026-05-04 | نُشر هذا المستودع |