GHSA-wmjr-v86c-m9jj:Better Auth多会话插件的会话注销钩子允许通过伪造Cookie来撤销任意会话
严重性等级:低 GitHub 已审核 发布日期:2025年11月26日 所属仓库:better-auth/better-auth 最后更新:2025年11月26日
漏洞详情
包管理器:npm 包名:better-auth (npm) 受影响版本:>= 1.3.34, < 1.4.0 已修复版本:1.4.0
描述
摘要
易受攻击的组件:多会话插件的 /sign-out 后置钩子 (packages/better-auth/src/plugins/multi-session/index.ts)
问题:该钩子信任原始的多会话Cookie,并将未经清理的令牌转发给 internalAdapter.deleteSessions,允许攻击者伪造Cookie来撤销任意会话。
状态:已使用更新的概念验证在本地复现。
影响
任何已经过身份验证的攻击者,如果能够获取其他用户的明文会话令牌(例如通过日志泄露、备份等),就可以伪造一个多会话Cookie并触发/sign-out端点。该钩子会提取攻击者提供的令牌并删除受害者的会话,导致跨账户注销。此过程不需要签名密钥。
产品/版本
- 仓库:better-auth
- 分支:canary
- 受影响文件:
packages/better-auth/src/plugins/multi-session/index.ts(当前HEAD) - 依赖配置:
pnpm install, Bun运行时 (bun v1.3.0)
复现步骤
- 克隆仓库并使用
pnpm install安装依赖。 - 确保已安装Bun。
- 将下面的概念验证脚本保存为
PROOF_OF_CONCEPTS/multi_session/force-signout.ts。 - 运行:
1bun run --conditions better-auth-dev-source PROOF_OF_CONCEPTS/multi_session/force-signout.ts - 观察模拟的适配器日志中会显示对攻击者所选令牌的删除操作。
概念验证
当前PoC(选择了正确的注销钩子并演示了伪造Cookie的流程):
|
|
PoC 输出:
|
|
这表明处理程序接受了伪造的Cookie,并尝试删除攻击者指定的会话令牌。
根本原因
多会话注销钩子使用 parseCookies(cookieHeader) 解析Cookie,对于每个匹配 _multi- 命名模式的键,它会设置一个空的Cookie响应,并按.分割值以提取令牌。在调用 ctx.context.internalAdapter.deleteSessions(...) 之前,没有调用 ctx.getSignedCookie 或等效的验证步骤。
严重性 / CVSS
- 向量:CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:H
- 依据:已登录的攻击者,无需用户交互,危害可跨用户传播;由于可以远程撤销会话,对完整性和可用性的影响都很高。
此漏洞由 winfunc 发现。
参考
- GHSA-wmjr-v86c-m9jj
- better-auth/better-auth@cfc453a
- https://github.com/better-auth/better-auth/releases/tag/v1.4.0
Bekacru 发布于 better-auth/better-auth 发布日期:2025年11月26日 发布于 GitHub 安全通告数据库:2025年11月26日 已审核:2025年11月26日 最后更新:2025年11月26日
严重性
等级:低 CVSS总体评分:2.0
此分数根据通用漏洞评分系统(CVSS)计算整体漏洞严重程度,范围从0到10。
CVSS v4 基础指标
可利用性指标
- 攻击向量:网络
- 攻击复杂度:低
- 攻击要求:存在
- 所需权限:高
- 用户交互:被动
脆弱系统影响指标
- 机密性:低
- 完整性:低
- 可用性:低
后续系统影响指标
- 机密性:低
- 完整性:低
- 可用性:无
CVSS v4 向量字符串:CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:P/VC:L/VI:L/VA:L/SC:L/SI:L/SA:N
EPSS 分数
(文章中未提供具体分数)
弱点
- CWE-287:不恰当的身份验证
当参与者声称拥有某个身份时,产品没有证明或未能充分证明该声明是正确的。
- CWE-345:对数据真实性的验证不足
产品没有充分验证数据的来源或真实性,导致其接受了无效数据。
标识符
- CVE ID:未知
- GHSA ID:GHSA-wmjr-v86c-m9jj
源代码
better-auth/better-auth
致谢
- 发现者:mufeedvh