EverShop Missing Authorization on PATCH /api/customers/:id Allows Unauthenticated Account Takeover 漏洞概述 严重性: 严重 日期: 2026年8月20日 影响范围: EverShop >= 0, = 0, < 2.2.1 修复方案 升级到版本 2.2.1 或更高版本。 描述 在 EverShop 中,客户更新路由被声明为 "access": "public",这导致管理员身份验证中间件调用 next() 而不检查调用者,并且没有客户会话中间件保护该路由;路由链中唯一的中间件解析 JSON 主体。updateCustomer.js 处理程序通过从 URL 路径中获取的 uuid 加载客户,并将提供的字段写回该记录,如果提供了密码,则对其进行哈希处理,而无需验证调用者是否拥有该记录。未经身份验证的请求携带已知客户 uuid,因此可以覆盖客户的电子邮件地址和密码,并从 200 响应中读取更新后的记录,接管账户并锁定其所有者。客户 uuid 通过订单确认电子邮件链接和管理员 URL 暴露。版本 2.2.1 将路由更改为 "access": "private"。 参考链接 GitHub Issue #952 route declared public at v2.1.2 handler updating by path uuid with no ownership check at v2.1.2 EverShop v2.2.1 GitHub Repository 贡献者 geo-chen