lorenzofradeani/CVE-2026-40776

GitHub: lorenzofradeani/CVE-2026-40776

CVE-2026-40776是WordPress Eventin插件中的未认证访问控制绕过和IDOR漏洞,可导致客户订单PII泄露和订单伪造。

Stars: 2 | Forks: 0

# CVE-2026-40776 ## Eventin (wp-event-solution) 访问控制缺陷 [![CVE](https://img.shields.io/badge/CVE-2026--40776-blue)](https://www.cve.org/CVERecord?id=CVE-2026-40776) [![CVSS](https://img.shields.io/badge/CVSS-7.5%20HIGH-orange)](https://patchstack.com/database/wordpress/plugin/wp-event-solution/vulnerability/wordpress-eventin-plugin-4-1-8-broken-access-control-vulnerability) [![CWE](https://img.shields.io/badge/CWE-862-lightgrey)](https://cwe.mitre.org/data/definitions/862.html) [![Patched](https://img.shields.io/badge/Patched-4.1.9-brightgreen)](https://wordpress.org/plugins/wp-event-solution/) [![License](https://img.shields.io/badge/License-MIT-yellow)](LICENSE) 未认证的 **PII泄露** 和 **订单伪造** 漏洞存在于 [Eventin](https://wordpress.org/plugins/wp-event-solution/) WordPress插件中(10,000+ 活跃安装)。一个公开的 REST 端点向任何访问者分发 `wp_rest` nonce,而三个下游权限回调接受该 nonce 作为认证的替代品——这使得每个客户订单端点的授权机制完全失效。 ## 一目了然 | 字段 | 值 | |---|---| | **CVE** | CVE-2026-40776 | | **Patchstack PSID** | `85de025d71e7` | | **CWE** | [CWE-862 — 缺失授权](https://cwe.mitre.org/data/definitions/862.html) | | **CVSS v3.1** | **7.5 (高危)** | | **插件** | Eventin — 日历活动、活动预订、门票与注册 (`wp-event-solution`) | | **受影响版本** | `<= 4.1.8` | | **已在版本中修复** | `4.1.9` | | **活跃安装数** | 10,000+ | | **需要认证** | 无(未认证) | | **需要用户交互** | 无 | | **报告者** | Lorenzo Fradeani — 独立安全研究员 | | **协调方** | [Patchstack](https://patchstack.com) | | **公开披露** | 2026-04-29 | ## 概述 三个问题组合在一起构成了完整的授权绕过: 1. **公开的 nonce 分发器。** `core/Admin/hooks.php`(第 68-77 行)使用 `permission_callback => '__return_true'` 注册了 `/wp-json/eventin/v1/nonce`,并向任何未认证的调用者返回一个新生成的 `wp_rest` nonce。 2. **将 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(...)`。 3. **IDOR + 完全开放的座位预订端点。** `OrderController::get_item`(第 310-317 行)按顺序 WordPress 文章 ID 加载任何订单,且不验证所有权;`/book-seats`(第 129-137 行)使用 `permission_callback => function() { return true; }`(完全无认证)。 端到端而言,只需要四个未认证请求即可泄露所有客户订单(完整姓名、电子邮件、电话号码、支付方式、参会者名单)并伪造新订单。请参阅 [`ADVISORY.md`](ADVISORY.md) 获取完整技术分析,以及 [`poc/poc-eventin.sh`]( 获取可复现的 PoC。 ## 缓解措施 将 `wp-event-solution` 更新至 **4.1.9** 或更高版本。对于旧版本,没有版本内的解决方法,只能禁用插件或在 Web 服务器 / 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 ``` ## 披露时间线 | 日期 | 事件 | |---|---| | 2026-03-10 | 报告给 Patchstack | | 2026-04-07 | 供应商发布 Eventin 4.1.9(修复) | | 2026-04-13 | 协调里程碑(Patchstack) | | 2026-04-29 | 公开披露(Patchstack advisory) | | 2026-05-01 | 第三方追踪器开始收录(WP-Firewall、Managed-WP、SolidWP) | | 2026-05-04 | 本仓库发布 | ## 参考资料 - 完整分析(权威): - Patchstack advisory: - wordpress.org 上的插件: - CWE-862 — 缺失授权: ## 负责任的使用 本材料发布用于防御和教育目的——帮助 WordPress 网站运营者识别风险,帮助插件开发者避免同样的错误(将 CSRF nonce 视为认证),并记录一个真实案例,说明权限回调中的 `||` 短路如何导致授权失效。**请勿对您不拥有或未获得明确书面授权测试的系统运行 PoC。** ## 许可证 [MIT](LICENSE)
标签:Broken Access Control, CISA项目, CVE-2026-40776, CVSS 7.5, CWE-862, Eventin, IDOR, nonce验证缺陷, PII泄露, REST API漏洞, WordPress安全, WordPress插件漏洞, wp-event-solution, 个人信息泄露, 安全漏洞, 应用安全, 授权绕过, 插件漏洞, 操作系统监控, 文件完整性监控, 无认证访问, 未授权访问, 网络安全, 订单伪造, 访问控制缺失, 隐私保护, 高危漏洞