电子邮件 OTP 登录没有尝试次数限制: useVerificationToken 不会在猜错时使代码失效(可通过暴力攻击实现帐户劫持)
作者: addyCooks创建于 2026年9月5日更新于 2026年9月12日
标签bug
摘要
useVerificationToken 在 packages/database/auth/drizzle-adapter.ts (第 512-538 行) 中仅在成功匹配时删除验证行。错误的 6 位数密码猜测无法找到行(通过精确的 token 值进行查找),记录警告并返回 null,而真实的密码则保持不变。它可以在整个 TTL(10 分钟,参见 #2068)内无限制地猜测。这是一个逻辑错误,不仅仅是缺少速率限制:移动登录路径已经正确地执行了此操作。apps/web/app/api/mobile/[...route]/route.ts:543-548 在 token 不匹配时删除行,然后返回 "invalid",在第一次错误尝试中销毁密码。Web(NextAuth)路径没有等效路径。
内容来源: CapSoftware/Cap