
WordPress プラグイン Eventin (アクティブインストール数 10,000+) における、認証なしの PII (個人情報) 開示 と 注文データの偽造 です。公開 REST エンドポイントが任意の訪問者に wp_rest nonce を配布し、後続の 3 つのパーミッションコールバックがその 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
以下の 3 つの問題が組み合わさり、完全な認可バイパスを構成します:
core/Admin/hooks.php (68–77 行) は /wp-json/eventin/v1/nonce を permission_callback => '__return_true' で登録し、認証されていない任意の呼び出し元に新しく発行された wp_rest nonce を返します。core/Order/ 内の 3 つのコントローラーが、その 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 以降に更新してください。古いリリースには、プラグインを無効化するか、影響を受ける REST ルート (/wp-json/eventin/v1/nonce、/wp-json/eventin/v2/orders*、/wp-json/eventin/v2/payments、/wp-json/eventin/v2/orders/book-seats) を 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
本資料は、防御および教育目的で公開されています。WordPress サイト運営者が露出を特定できるように、プラグイン作者が同じ過ち (CSRF nonce を認証として扱うこと) を犯さないように、そしてパーミッションコールバック内の || の短絡評価がどのように認可を崩壊させるかの実例を文書化するためです。所有していない、または明示的な書面によるテスト許可を得ていないシステムに対して PoC を実行しないでください。
| 項目 | 値 |
|---|
| CVE | CVE-2026-40776 |
| Patchstack PSID | 85de025d71e7 |
| CWE | CWE-862 — 認可の欠如 (Missing Authorization) |
| CVSS v3.1 | 7.5 (HIGH) |
| プラグイン | Eventin — イベントカレンダー、イベント予約、チケット & 登録 (wp-event-solution) |
| 影響を受けるバージョン | <= 4.1.8 |
| 修正済みバージョン | 4.1.9 |
| アクティブインストール数 | 10,000+ |
| 必要な認証 | なし (認証不要) |
| ユーザー操作 | なし |
| 報告者 | Lorenzo Fradeani — 独立系セキュリティ研究者 |
| 調整元 | Patchstack |
| 公開日 | 2026-04-29 |
OrderController::get_item (310–317 行) は所有権の検証なしに、WordPress の連番 post 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 | 本リポジトリを公開 |