
CVE-2026-40776 — Fehlerhafte Zugriffskontrolle + IDOR in WordPress Eventin (wp-event-solution) <= 4.1.8
Nicht authentifizierte Offenlegung personenbezogener Daten (PII) und Bestellungsfälschung im Eventin WordPress-Plugin (10.000+ aktive Installationen). Ein öffentlicher REST-Endpunkt gibt jedem Besucher ein wp_rest-Nonce aus, und drei nachgelagerte Berechtigungs-Callbacks akzeptieren dieses Nonce als Ersatz für die Authentifizierung – wodurch die Autorisierung für jeden Kundenbestellungs-Endpunkt aufgehoben wird.
Vollständiger technischer Bericht: https://lorenzofradeani.com/en/blog/cve-2026-40776 Patchstack-Hinweis: https://patchstack.com/database/wordpress/plugin/wp-event-solution/vulnerability/wordpress-eventin-plugin-4-1-8-broken-access-control-vulnerability
| Feld | Wert |
|---|---|
| CVE | CVE-2026-40776 |
| Patchstack PSID | 85de025d71e7 |
| CWE | CWE-862 — Fehlende Autorisierung |
| CVSS v3.1 | 7.5 (HOCH) |
| Plugin | Eventin — Ereigniskalender, Eventbuchung, Ticket & Anmeldung (wp-event-solution) |
| Betroffene Versionen | <= 4.1.8 |
| Behoben in | 4.1.9 |
| Aktive Installationen | 10.000+ |
| Authentifizierung erforderlich | Keine (nicht authentifiziert) |
| Benutzerinteraktion | Keine |
| Gemeldet von | Lorenzo Fradeani — unabhängige Sicherheitsforschung |
| Koordiniert durch | Patchstack |
| Öffentliche Offenlegung | 2026-04-29 |
Drei Probleme ergeben eine vollständige Autorisierungsumgehung:
core/Admin/hooks.php (Zeilen 68–77) registriert /wp-json/eventin/v1/nonce mit permission_callback => '__return_true' und gibt jedem nicht authentifizierten Aufrufer ein frisch erstelltes wp_rest-Nonce zurück.core/Order/ akzeptieren dieses Nonce als einzige Autorisierungsprüfung:
OrderController::get_item_permissions_check (Zeilen 146–148) — current_user_can(...) || wp_verify_nonce(...) ; das || macht das Nonce allein ausreichend.OrderController::create_item_permissions_check (Zeilen 476–478) — nur wp_verify_nonce(...).PaymentController::create_payment_permission_check (Zeilen 66–70) — nur wp_verify_nonce(...).OrderController::get_item (Zeilen 310–317) lädt jede Bestellung anhand einer sequentiellen WordPress-Beitrags-ID ohne Eigentumsprüfung, und /book-seats (Zeilen 129–137) verwendet permission_callback => function() { return true; } (überhaupt keine Authentifizierung).Ende-zu-Ende reichen vier nicht authentifizierte Anfragen aus, um jede Kundenbestellung (vollständige Namen, E-Mails, Telefonnummern, Zahlungsmethoden, Teilnehmerliste) auszulesen und neue Bestellungen zu fälschen. Siehe ADVISORY.md für die vollständige technische Aufschlüsselung und poc/poc-eventin.sh für einen reproduzierbaren PoC.
Aktualisieren Sie wp-event-solution auf 4.1.9 oder höher. Es gibt keine versionsinterne Problemumgehung für ältere Versionen, außer das Plugin zu deaktivieren oder die betroffenen REST-Routen (/wp-json/eventin/v1/nonce, /wp-json/eventin/v2/orders*, /wp-json/eventin/v2/payments, /wp-json/eventin/v2/orders/book-seats) auf Web-Server-/WAF-Ebene zu blockieren.
.
├── README.md diese Datei
├── ADVISORY.md vollständiger technischer Hinweis + Code-Review
├── LICENSE MIT
├── poc/
│ └── poc-eventin.sh 4-Schritte-Bash-PoC gegen ein lokales Labor
└── screenshots/
├── poc1-idor-pii-leak.png IDOR-Lesen von Bestellung #21 mit vollständigen PII
├── poc2-no-nonce-blocked.png gleiche Anfrage ohne Nonce → 401
└── poc3-fake-order-created.png nicht authentifizierter POST erstellt eine gefälschte Bestellung
| Datum | Ereignis |
|---|---|
| 2026-03-10 | An Patchstack gemeldet |
| 2026-04-07 | Anbieter veröffentlicht Eventin 4.1.9 (Fix) |
| 2026-04-13 | Koordinationsmeilenstein (Patchstack) |
| 2026-04-29 | Öffentliche Offenlegung (Patchstack-Hinweis) |
| 2026-05-01 | Drittanbieter-Tracker greifen es auf (WP-Firewall, Managed-WP, SolidWP) |
| 2026-05-04 | Dieses Repository veröffentlicht |
Dieses Material wird zu defensiven und pädagogischen Zwecken veröffentlicht – um WordPress-Seitenbetreibern zu helfen, Gefährdungen zu erkennen, um Plugin-Autoren zu helfen, denselben Fehler zu vermeiden (ein CSRF-Nonce als Authentifizierung zu behandeln), und um ein reales Beispiel dafür zu dokumentieren, wie der ||-Kurzschluss in einem Berechtigungs-Callback die Autorisierung zunichtemacht. Führen Sie den PoC nicht gegen Systeme aus, die Ihnen nicht gehören oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben.