Better Auth Passkey插件允许通过IDOR漏洞删除Passkey
漏洞标识符: GHSA-4vcf-q4xf-f48m 严重程度: 高危 (CVSS 评分 7.1) 发布日期: 2025年11月24日 更新日期: 2025年11月25日 影响包: npm - @better-auth/passkey 受影响版本: < 1.4.0 已修复版本: 1.4.0
漏洞详情
摘要
受影响版本的better-auth passkey插件,允许任何拥有有效会话的用户,通过向 POST /passkey/delete-passkey 端点发送请求,利用Passkey的ID(id)参数,删除任意用户的Passkey。
技术细节
漏洞根源于对用户输入的隐式信任。在删除Passkey的查询中,代码直接使用了来自请求体(ctx.body.id)的ID值,而未进行适当的授权验证,以确认当前用户是否有权删除该特定ID对应的Passkey。
更严重的是,配置了 useNumberId 选项的better-auth应用会使用自增的数字ID。这使得攻击者可以通过简单的ID枚举(例如,从1开始顺序尝试),轻易地删除系统中所有用户的Passkey凭证。
影响评估
此漏洞属于不安全的直接对象引用(IDOR),具体可归类为以下通用缺陷枚举(CWE):
- CWE-284: 不正确的访问控制
- CWE-639: 通过用户可控的键值进行授权绕过
根据通用漏洞评分系统(CVSS)v3.1评估,其关键指标如下:
- 攻击向量: 网络
- 攻击复杂度: 低
- 所需权限: 低(仅需一个有效会话)
- 用户交互: 无
- 影响范围: 未改变
- 机密性影响: 无
- 完整性影响: 高(可任意修改/删除他人的认证数据)
- 可用性影响: 低(可能导致用户因Passkey被删除而无法登录)
解决方案
用户应立即将 @better-auth/passkey 插件升级至 1.4.0 或更高版本,该版本已包含针对此漏洞的修复。
参考链接
- 漏洞公告: GHSA-4vcf-q4xf-f48m
- 修复提交: better-auth/better-auth@06d68239e
- 源代码仓库: better-auth/better-auth
致谢
此漏洞由 goksan 报告。