
CVE-2026-40776 — Contrôle d'accès défaillant + IDOR dans WordPress Eventin (wp-event-solution) <= 4.1.8
Divulgation non authentifiée de PII et falsification de commandes dans le plugin WordPress Eventin (plus de 10 000 installations actives). Un point de terminaison REST public fournit un nonce wp_rest à n'importe quel visiteur, et trois rappels de permission en aval acceptent ce nonce comme substitut à l'authentification — anéantissant l'autorisation sur chaque point de terminaison de commande client.
Analyse technique complète : https://lorenzofradeani.com/en/blog/cve-2026-40776 Avis Patchstack : https://patchstack.com/database/wordpress/plugin/wp-event-solution/vulnerability/wordpress-eventin-plugin-4-1-8-broken-access-control-vulnerability
Trois failles se combinent en un contournement complet de l'autorisation :
core/Admin/hooks.php (lignes 68–77) enregistre /wp-json/eventin/v1/nonce avec permission_callback => '__return_true' et renvoie un nonce wp_rest fraîchement généré à tout appelant non authentifié.core/Order/ acceptent ce nonce comme seule vérification d'autorisation :
OrderController::get_item_permissions_check (lignes 146–148) — current_user_can(...) || wp_verify_nonce(...) ; le || rend le nonce suffisant à lui seul.OrderController::create_item_permissions_check (lignes 476–478) — wp_verify_nonce(...) uniquement.PaymentController::create_payment_permission_check (lignes 66–70) — uniquement.De bout en bout, quatre requêtes non authentifiées suffisent pour extraire toutes les commandes clients (noms complets, e-mails, numéros de téléphone, méthodes de paiement, liste des participants) et pour forger de nouvelles commandes. Voir ADVISORY.md pour l'analyse technique complète et poc/poc-eventin.sh pour un PoC reproductible.
Mettez à jour wp-event-solution vers 4.1.9 ou une version ultérieure. Il n'existe aucun contournement pour les anciennes versions, à part désactiver le plugin ou bloquer les routes REST concernées (/wp-json/eventin/v1/nonce, /wp-json/eventin/v2/orders*, /wp-json/eventin/v2/payments, /wp-json/eventin/v2/orders/book-seats) au niveau du serveur web / 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
Ce contenu est publié à des fins défensives et éducatives — pour aider les opérateurs de sites WordPress à identifier leur exposition, pour aider les auteurs de plugins à éviter la même erreur (traiter un nonce CSRF comme une authentification), et pour documenter un exemple concret de la façon dont le court-circuit || dans un rappel de permission fait s'effondrer l'autorisation. N'exécutez pas le PoC contre des systèmes que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation écrite explicite de tester.
| Champ | Valeur |
|---|
| CVE | CVE-2026-40776 |
| Patchstack PSID | 85de025d71e7 |
| CWE | CWE-862 — Autorisation manquante |
| CVSS v3.1 | 7.5 (ÉLEVÉ) |
| Plugin | Eventin — Events Calendar, Event Booking, Ticket & Registration (wp-event-solution) |
| Versions affectées | <= 4.1.8 |
| Corrigé dans | 4.1.9 |
| Installations actives | 10 000+ |
| Authentification requise | Aucune (non authentifiée) |
| Interaction utilisateur | Aucune |
| Signalé par | Lorenzo Fradeani — recherche indépendante en sécurité |
| Coordonné par | Patchstack |
| Divulgation publique | 2026-04-29 |
wp_verify_nonce(...)OrderController::get_item (lignes 310–317) charge n'importe quelle commande par ID de post WordPress séquentiel sans vérification de propriété, et /book-seats (lignes 129–137) utilise permission_callback => function() { return true; } (aucune authentification du tout).| Date | Événement |
|---|
| 2026-03-10 | Signalé à Patchstack |
| 2026-04-07 | L'éditeur publie Eventin 4.1.9 (correctif) |
| 2026-04-13 | Étape de coordination (Patchstack) |
| 2026-04-29 | Divulgation publique (avis Patchstack) |
| 2026-05-01 | Les traqueurs tiers s'en emparent (WP-Firewall, Managed-WP, SolidWP) |
| 2026-05-04 | Publication de ce dépôt |