漏洞详情
包管理器: npm 受影响的包: @better-auth/passkey 受影响版本: < 1.4.0 已修复版本: 1.4.0 严重等级: 高危 (CVSS 评分: 7.1)
描述
受影响的 @better-auth/passkey 插件版本存在一个不安全的直接对象引用(IDOR)漏洞。该漏洞允许任何拥有有效会话的用户,通过向 POST /passkey/delete-passkey 端点发送请求,删除任意通行密钥。
技术细节
- 根本原因:代码隐式信任了
ctx.body.id参数,并将其直接用于通行密钥的删除查询,没有执行适当的授权检查来验证当前用户是否拥有对该密钥的删除权限。 - 攻击面扩大:配置为使用
useNumberId(自增ID)的 better-auth 应用程序,使得攻击者可以通过简单的ID枚举,轻易地删除系统内的所有通行密钥。 - 相关弱点:
- CWE-284: 不正确的访问控制。
- CWE-639: 通过用户控制的密钥绕过授权。
影响
- 完整性影响: 高 – 攻击者可以未经授权修改(删除)其他用户的认证数据。
- 可用性影响: 低 – 可能导致用户无法使用通行密钥登录。
- 攻击向量: 网络。
- 所需权限: 低(任何有效会话)。
- 用户交互: 无。
解决方案
升级 @better-auth/passkey 插件到版本 1.4.0 或更高版本。
参考
- GitHub 安全公告: GHSA-4vcf-q4xf-f48m
- 修复提交: better-auth/better-auth@06d68239e