[安全性] 任何团队成员都可以删除整个团队 - 中午 tRPC 团队 .delete 缺失所有者检查
作者: geo-chen创建于 2026年6月24日更新于 2026年6月24日
(通过电子邮件于 2026 年 5 月 25 日报告,但没有得到任何回复。) 我报告了团队.delete tRPC 变异中的一个未授权漏洞。普通团队成员(任何受邀用户的默认角色)可以不可逆地删除整个团队,包括所有财务记录、银行连接(由下游清理作业使用的访问令牌)、发票、文档和 OAuth 集成。团队所有者无法撤销删除操作。 受影响: 当前主版本(提交 e5f45ed0d49cdb34576373623c4579b72daa74c1, 2026-05-07)。 根本原因。 apps/api/src/trpc/routers/team.ts 在第 148-214 行。 team.delete 调用 hasTeamAccess(db, input.teamId, session.user.id),返回任何用户在 usersOnTeam 中的 true。 同一路由中的破坏性兄弟端点(team.deleteMember 在第 216 行,team.updateMember 在第 266 行)正确地要求 callerRole === "owner"。 数据层函数 deleteTeam 在 packages/db/src/queries/teams.ts:388 只重新检查 hasTeamAccess。 重现。 以 Alice 为团队 T 的所有者,Bob 为 T 的普通成员,Bob 执行以下操作:
内容来源: midday-ai/midday