
CVE-2026-40776 — Controllo degli accessi non corretto + IDOR in WordPress Eventin (wp-event-solution) <= 4.1.8
Divulgazione di PII non autenticata e falsificazione di ordini nel plugin WordPress Eventin (più di 10.000 installazioni attive). Un endpoint REST pubblico consegna un nonce wp_rest a qualsiasi visitatore, e tre callback di autorizzazione a valle accettano quel nonce come sostituto dell'autenticazione — facendo crollare l'autorizzazione su ogni endpoint degli ordini dei clienti.
Analisi tecnica completa: https://lorenzofradeani.com/en/blog/cve-2026-40776 Avviso Patchstack: https://patchstack.com/database/wordpress/plugin/wp-event-solution/vulnerability/wordpress-eventin-plugin-4-1-8-broken-access-control-vulnerability
Tre problemi si combinano in un bypass completo dell'autorizzazione:
core/Admin/hooks.php (righe 68–77) registra /wp-json/eventin/v1/nonce con permission_callback => '__return_true' e restituisce un nonce wp_rest appena generato a qualsiasi chiamante non autenticato.core/Order/ accettano quel nonce come unico controllo di autorizzazione:
OrderController::get_item_permissions_check (righe 146–148) — current_user_can(...) || wp_verify_nonce(...) ; || rende il solo nonce sufficiente.OrderController::create_item_permissions_check (righe 476–478) — solo wp_verify_nonce(...).PaymentController::create_payment_permission_check (righe 66–70) — solo .End-to-end, quattro richieste non autenticate sono sufficienti per estrarre tutti gli ordini dei clienti (nomi completi, email, numeri di telefono, metodi di pagamento, elenco partecipanti) e per forgiare nuovi ordini. Consulta ADVISORY.md per l'analisi tecnica completa e poc/poc-eventin.sh per un PoC riproducibile.
Aggiorna wp-event-solution alla versione 4.1.9 o successiva. Non esiste alcuna soluzione alternativa all'interno della versione per le release precedenti, a parte disabilitare il plugin o bloccare le route REST interessate (/wp-json/eventin/v1/nonce, /wp-json/eventin/v2/orders*, /wp-json/eventin/v2/payments, /wp-json/eventin/v2/orders/book-seats) a livello di web server / 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
Questo materiale è pubblicato a scopo difensivo ed educativo — per aiutare gli operatori di siti WordPress a identificare l'esposizione, per aiutare gli autori di plugin a evitare lo stesso errore (trattare un nonce CSRF come autenticazione) e per documentare un esempio reale di come il cortocircuito || in un callback di autorizzazione faccia crollare l'autorizzazione. Non eseguire il PoC contro sistemi che non possiedi o per i quali non hai esplicita autorizzazione scritta al test.
| Campo | Valore |
|---|
| CVE | CVE-2026-40776 |
| Patchstack PSID | 85de025d71e7 |
| CWE | CWE-862 — Autorizzazione mancante |
| CVSS v3.1 | 7.5 (ALTO) |
| Plugin | Eventin — Calendario eventi, Prenotazione eventi, Biglietti e Registrazione (wp-event-solution) |
| Versioni interessate | <= 4.1.8 |
| Corretta in | 4.1.9 |
| Installazioni attive | 10.000+ |
| Autenticazione richiesta | Nessuna (non autenticata) |
| Interazione dell'utente | Nessuna |
| Segnalato da | Lorenzo Fradeani — ricerca indipendente sulla sicurezza |
| Coordinato da | Patchstack |
| Divulgazione pubblica | 2026-04-29 |
wp_verify_nonce(...)OrderController::get_item (righe 310–317) carica qualsiasi ordine tramite ID sequenziale del post WordPress senza verifica di proprietà, e /book-seats (righe 129–137) usa permission_callback => function() { return true; } (nessuna autenticazione).| Data | Evento |
|---|
| 2026-03-10 | Segnalato a Patchstack |
| 2026-04-07 | Il vendor rilascia Eventin 4.1.9 (fix) |
| 2026-04-13 | Traguardo di coordinamento (Patchstack) |
| 2026-04-29 | Divulgazione pubblica (avviso Patchstack) |
| 2026-05-01 | I tracker di terze parti lo rilevano (WP-Firewall, Managed-WP, SolidWP) |
| 2026-05-04 | Questo repository pubblicato |