Better Auth Passkey插件因IDOR漏洞允许任意删除Passkey

本文披露了Better Auth Passkey插件中的一个高危安全漏洞。受影响版本(<1.4.0)存在不安全的直接对象引用(IDOR)问题,允许任何拥有有效会话的用户通过POST /passkey/delete-passkey端点,利用ID删除任意用户的Passkey凭证,对系统完整性和可用性构成严重威胁。

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 报告。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计