
CVE-2026-40776 — Broken Access Control + IDOR in WordPress Eventin (wp-event-solution) <= 4.1.8
WordPress प्लगइन Eventin (10,000+ सक्रिय स्थापनाएँ) में अप्रमाणित PII प्रकटीकरण और आदेश जालसाजी। एक सार्वजनिक 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) — केवल ।पूरी प्रक्रिया में, चार अप्रमाणित अनुरोध हर ग्राहक आदेश (पूरे नाम, ईमेल, फोन नंबर, भुगतान विधियाँ, उपस्थित लोगों की सूची) को डंप करने और नए आदेश बनाने के लिए पर्याप्त हैं। विस्तृत तकनीकी विवरण के लिए ADVISORY.md और प्रतिलिपि बनाने योग्य PoC के लिए poc/poc-eventin.sh देखें।
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 यह फ़ाइल
├── ADVISORY.md पूर्ण तकनीकी सलाह + कोड समीक्षा
├── LICENSE MIT लाइसेंस
├── poc/
│ └── poc-eventin.sh 4-चरणीय bash PoC, स्थानीय प्रयोगशाला के विरुद्ध
└── screenshots/
├── poc1-idor-pii-leak.png IDOR द्वारा आदेश #21 का पूर्ण PII सहित पठन
├── poc2-no-nonce-blocked.png बिना nonce के वही अनुरोध → 401
└── poc3-fake-order-created.png अप्रमाणित POST द्वारा नकली आदेश बनाना
यह सामग्री रक्षात्मक और शैक्षिक उद्देश्यों के लिए प्रकाशित की गई है — WordPress साइट संचालकों को जोखिम पहचानने में मदद करने के लिए, प्लगइन लेखकों को उसी गलती (CSRF nonce को प्रमाणीकरण के रूप में मानना) से बचने में मदद करने के लिए, और अनुमति कॉलबैक में || शॉर्ट-सर्किट कैसे प्राधिकरण को ध्वस्त करता है, इसका एक वास्तविक दुनिया का उदाहरण दस्तावेज करने के लिए। PoC को उन प्रणालियों पर न चलाएं जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित प्राधिकरण नहीं है।
| फ़ील्ड | मान |
|---|
| CVE | CVE-2026-40776 |
| Patchstack PSID | 85de025d71e7 |
| CWE | CWE-862 — अनुपलब्ध प्राधिकरण |
| CVSS v3.1 | 7.5 (HIGH) |
| प्लगइन | Eventin — ईवेंट कैलेंडर, ईवेंट बुकिंग, टिकट और पंजीकरण (wp-event-solution) |
| प्रभावित संस्करण | <= 4.1.8 |
| पैच संस्करण | 4.1.9 |
| सक्रिय स्थापनाएँ | 10,000+ |
| प्रमाणीकरण आवश्यक | कोई नहीं (अप्रमाणित) |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| रिपोर्टकर्ता | Lorenzo Fradeani — स्वतंत्र सुरक्षा अनुसंधान |
| समन्वयक | Patchstack |
| सार्वजनिक प्रकटीकरण | 2026-04-29 |
wp_verify_nonce(...)OrderController::get_item (लाइनें 310–317) स्वामित्व सत्यापन के बिना क्रमिक WordPress पोस्ट आईडी द्वारा किसी भी आदेश को लोड करता है, और /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 | यह रिपॉजिटरी प्रकाशित |