
CVE-2026-40776 — Broken Access Control + IDOR in WordPress Eventin (wp-event-solution) <= 4.1.8
Divulgação de PII não autenticada e falsificação de pedidos no plugin WordPress Eventin (mais de 10.000 instalações ativas). Um endpoint REST público distribui um nonce wp_rest para qualquer visitante, e três callbacks de permissão a jusante aceitam esse nonce como substituto da autenticação — colapsando a autorização em todos os endpoints de pedidos de clientes.
Artigo técnico completo: https://lorenzofradeani.com/en/blog/cve-2026-40776 Comunicado do Patchstack: https://patchstack.com/database/wordpress/plugin/wp-event-solution/vulnerability/wordpress-eventin-plugin-4-1-8-broken-access-control-vulnerability
Três problemas se combinam para formar uma bypass completa de autorização:
core/Admin/hooks.php (linhas 68–77) registra /wp-json/eventin/v1/nonce com permission_callback => '__return_true' e retorna um nonce wp_rest recém-criado para qualquer chamador não autenticado.core/Order/ aceitam esse nonce como única verificação de autorização:
OrderController::get_item_permissions_check (linhas 146–148) — current_user_can(...) || wp_verify_nonce(...) ; o || torna o nonce sozinho suficiente.OrderController::create_item_permissions_check (linhas 476–478) — apenas wp_verify_nonce(...).PaymentController::create_payment_permission_check (linhas 66–70) — apenas .De ponta a ponta, quatro requisições não autenticadas são suficientes para extrair todos os pedidos de clientes (nomes completos, e-mails, números de telefone, métodos de pagamento, lista de participantes) e forjar novos pedidos. Consulte ADVISORY.md para a análise técnica completa e poc/poc-eventin.sh para um PoC reproduzível.
Atualize wp-event-solution para a versão 4.1.9 ou superior. Não há solução alternativa dentro da mesma versão para versões mais antigas, a menos que o plugin seja desativado ou as rotas REST afetadas (/wp-json/eventin/v1/nonce, /wp-json/eventin/v2/orders*, /wp-json/eventin/v2/payments, /wp-json/eventin/v2/orders/book-seats) sejam bloqueadas na camada do servidor web / WAF.
.
├── README.md este arquivo
├── ADVISORY.md comunicado técnico completo + revisão de código
├── LICENSE MIT
├── poc/
│ └── poc-eventin.sh PoC em bash de 4 passos contra um laboratório local
└── screenshots/
├── poc1-idor-pii-leak.png Leitura IDOR do pedido #21 com PII completo
├── poc2-no-nonce-blocked.png mesmo pedido sem nonce → 401
└── poc3-fake-order-created.png POST não autenticado criando um pedido falso
Este material é publicado para fins defensivos e educacionais — para ajudar operadores de sites WordPress a identificar exposição, para ajudar autores de plugins a evitar o mesmo erro (tratar um nonce CSRF como autenticação), e para documentar um exemplo real de como o curto-circuito || em um callback de permissão colapsa a autorização. Não execute o PoC contra sistemas que você não possui ou para os quais não possui autorização escrita explícita para testar.
| Campo | Valor |
|---|
| CVE | CVE-2026-40776 |
| PSID do Patchstack | 85de025d71e7 |
| CWE | CWE-862 — Autorização Ausente |
| CVSS v3.1 | 7.5 (ALTA) |
| Plugin | Eventin — Calendário de Eventos, Reserva de Eventos, Ingressos e Registro (wp-event-solution) |
| Versões afetadas | <= 4.1.8 |
| Corrigido em | 4.1.9 |
| Instalações ativas | Mais de 10.000 |
| Autenticação necessária | Nenhum (não autenticado) |
| Interação do usuário | Nenhuma |
| Relatado por | Lorenzo Fradeani — pesquisa independente de segurança |
| Coordenado por | Patchstack |
| Divulgação pública | 2026-04-29 |
wp_verify_nonce(...)OrderController::get_item (linhas 310–317) carrega qualquer pedido por ID sequencial de post do WordPress sem verificação de propriedade, e /book-seats (linhas 129–137) usa permission_callback => function() { return true; } (nenhuma autenticação).| Data | Evento |
|---|
| 2026-03-10 | Reportado ao Patchstack |
| 2026-04-07 | Desenvolvedor lança Eventin 4.1.9 (correção) |
| 2026-04-13 | Marco de coordenação (Patchstack) |
| 2026-04-29 | Divulgação pública (comunicado do Patchstack) |
| 2026-05-01 | Rastreadores de terceiros detectam (WP-Firewall, Managed-WP, SolidWP) |
| 2026-05-04 | Este repositório publicado |