
CVE-2026-40776 — WordPress Eventin (wp-event-solution) <= 4.1.8의 깨진 접근 제어 + IDOR
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행) — wp_verify_nonce(...)만 사용.종단 간에 인증되지 않은 요청 4개만으로 모든 고객 주문(전체 이름, 이메일, 전화번호, 결제 수단, 참석자 명단)을 덤프하고 새 주문을 위조할 수 있습니다. 전체 기술 분석은 ADVISORY.md를, 재현 가능한 PoC는 poc/poc-eventin.sh를 참조하십시오.
wp-event-solution을 4.1.9 이상으로 업데이트하십시오. 이전 버전에서는 플러그인을 비활성화하거나 웹 서버/WAF 계층에서 영향을 받는 REST 경로(/wp-json/eventin/v1/nonce, /wp-json/eventin/v2/orders*, /wp-json/eventin/v2/payments, /wp-json/eventin/v2/orders/book-seats)를 차단하는 것 외에는 버전 내 해결 방법이 없습니다.
.
├── 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
이 자료는 방어 및 교육 목적으로 게시되었습니다 — WordPress 사이트 운영자가 노출을 식별하도록 돕고, 플러그인 작성자가 동일한 실수(CSRF nonce를 인증으로 취급)를 피하도록 돕고, 권한 콜백의 || 단락 평가가 권한 부여를 무너뜨리는 실제 사례를 문서화하기 위한 것입니다. 소유하지 않았거나 명시적인 서면 테스트 승인을 받지 않은 시스템에 대해 PoC를 실행하지 마십시오.
| 필드 | 값 |
|---|
| CVE | CVE-2026-40776 |
| Patchstack PSID | 85de025d71e7 |
| CWE | CWE-862 — 누락된 권한 부여 |
| CVSS v3.1 | 7.5 (높음) |
| 플러그인 | Eventin — 이벤트 캘린더, 이벤트 예약, 티켓 및 등록 (wp-event-solution) |
| 영향을 받는 버전 | <= 4.1.8 |
| 패치된 버전 | 4.1.9 |
| 활성 설치 수 | 10,000+ |
| 필요한 인증 | 없음(인증 불필요) |
| 사용자 상호작용 | 없음 |
| 보고자 | Lorenzo Fradeani — 독립 보안 연구 |
| 조정 | Patchstack |
| 공개 공시 | 2026-04-29 |
OrderController::get_item(310–317행)은 소유권 확인 없이 순차적인 WordPress 포스트 ID로 모든 주문을 로드하며, /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 | 이 저장소 게시 |