🔴 严重 | CVE-2026-53512 — Better Auth is an authentication and authorization...
🔴 【深度分析】严重安全漏洞:CVE-2026-53512
CVSS 评分: 严重(9.1)🔴 状态: Analyzed 发布时间: 2026-07-15
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-53512 |
| CVSS 评分 | 9.1 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-287,CWE-306,CWE-345,CWE-863 |
| 发布时间 | 2026-07-15 |
| 最后更新 | 2026-07-21 |
| 状态 | Analyzed |
| 数据来源 | security-advisories@github.com |
好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 原始数据,生成一篇专业的漏洞深度分析文章。
🔴 CVE-2026-53512:Better Auth OAuth Token 端点认证绕过漏洞(严重)
CVSS 4.0 评分:9.1(严重)
CVSS 向量:
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N危害等级: 严重 (Critical)。该漏洞允许远程、未授权的攻击者,通过利用一个有效的
refresh_token,在无需提供机密客户端凭据的情况下,获取新的access_token和refresh_token,从而完全接管受害者的认证会话。
漏洞概述
CVE-2026-53512 是一个存在于 Better Auth 认证与授权库中的严重逻辑漏洞。该库是一个用于 TypeScript 生态系统的身份验证框架。
漏洞核心: 在版本 1.6.11 之前的 Better Auth 中,其遗留的 oidcProvider 和 mcp 插件所暴露的 OAuth Token 端点(例如 /api/auth/oauth2/token 或 /api/auth/mcp/token),在处理 refresh_token grant 类型的请求时,未能正确地验证机密客户端(confidential client)的 client_secret。
根据 OAuth 2.0 和 OpenID Connect 标准,当一个应用被注册为“机密客户端”(如后端服务器)时,其对 refresh_token 的交换请求必须包含 client_secret 以证明客户端身份。Better Auth 的这部分实现遗漏了这个关键验证步骤。
影响范围: 所有使用受影响版本的 Better Auth 并启用了 oidcProvider 或 mcp 插件的应用。官方确认 @better-auth/oauth-provider 包不受影响。
严重程度: 严重。攻击者只需获取到一个用户的 refresh_token,无需窃取任何客户端凭据,即可无限期地维持用户的认证状态,并获取访问高价值资源所需的 access_token。
受影响组件与版本
- 受影响软件: Better Auth
- 受影响版本: < 1.6.11
- 修复版本: 1.6.11
- 不受影响版本: >= 1.6.11
- 不受影响组件:
@better-auth/oauth-provider包
漏洞原理分析
该漏洞源于对 OAuth 2.0 和 OpenID Connect 协议规范的实现缺陷。现有信息足以进行如下原理分析:
协议背景:在标准的 OAuth 2.0
refresh_tokenGrant 流程中,客户端需要向 Token 端点发送一个授权请求,其中必须包含grant_type=refresh_token、有效的refresh_token以及client_id和client_secret(对于机密客户端而言)。client_secret是用来确保只有被授权的后端服务才能使用refresh_token换取新的令牌。漏洞成因:Better Auth 的遗留
oidcProvider和mcp插件在实现 Token 端点时,处理refresh_token的代码逻辑存在缺陷。从描述 “authenticates only possession of the bound refreshToken row and matching client_id, without verifying the confidential client's client_secret” 可知,服务器仅检查了:- 提交的
refresh_token是否在数据库中有效(refreshToken row)。 - 提交的
client_id是否与refresh_token绑定(matching client_id)。
然而,它没有执行关键的第二因素认证:验证与
client_id关联的client_secret。这意味着,任何攻击者只要能够获取到一个有效的refresh_token,即使他们不知道客户的机密凭据,也能成功提交请求。- 提交的
攻击向量:
- 获取
refresh_token:攻击者可以通过多种方式窃取refresh_token,例如:- 跨站脚本攻击 (XSS):在用户浏览器中执行脚本,窃取存储在其 localStorage 或 cookie 中的令牌。
- 中间人攻击 (MITM):在未加密的连接上截获令牌。
- 日志泄露:从服务器日志或开发调试信息中获取。
- 恶意软件:从受害者设备上窃取。
- 构造攻击请求:攻击者向受影响的 Token 端点(如
/api/auth/oauth2/token)发送一个正常的 POST 请求,包含grant_type=refresh_token、refresh_token=<被窃取的令牌>以及对应的client_id。但请求中不会包含client_secret字段。 - 获得新的令牌:由于服务器缺失对
client_secret的校验,该请求会被视为合法,并返回一个新的access_token和refresh_token。攻击者现在可以用新的令牌冒充受害者。
- 获取
影响评估
| 评估维度 | 分析 |
|---|---|
| 攻击复杂度 (AC: L) | 攻击复杂度低。一旦攻击者获得了有效的 refresh_token,攻击步骤非常简单,只需发送一个标准的 HTTP 请求即可完成。 |
| 攻击向量 (AV: N) | 攻击可通过网络远程发起,无需物理接触。 |
| 所需权限 (PR: N) | 攻击者无需在系统上拥有任何合法账户或权限,只需要外部的 refresh_token 即可。 |
| 用户交互 (UI: N) | 攻击过程不需要受害者的任何交互(受害者可能在不知情的情况下已经被窃取了令牌)。 |
| 机密性影响 (VC: H) | 高。攻击者可以获得新的 access_token,从而访问受害者有权访问的任何受保护资源,包括个人数据、敏感业务信息等。 |
| 完整性影响 (VI: H) | 高。攻击者可以使用 access_token 以受害者身份修改数据、执行操作、发表内容等,严重破坏数据完整性和系统可用性。 |
| 攻击前提 (AT: P) | 需要存在一个被捕获的 refresh_token。这需要攻击者具备初步的渗透能力(如 XSS、MITM、日志访问等),但一旦达成,后续攻击的门槛极低。 |
潜在后果:
- 用户账户完全接管:攻击者可以持续保持对受害者账户的访问,直至令牌被手动撤销或过期。
- 横向移动:如果被攻击的应用与其他内部系统集成,
access_token可能被用于访问更敏感的内部资源。 - 数据泄露:攻击者可以窃取所有用户数据。
- 身份冒用:攻击者可以冒充受害者执行合法操作,如交易、发消息、修改密码等。
修复建议
1. 立即升级(首要方案)
- 强烈建议:立即将 Better Auth 库升级到 1.6.11 或更高版本。
- 升级操作通常只需更新
package.json中的依赖版本并重新安装依赖即可:npm install better-auth@latest # 或 yarn add better-auth@latest # 或 pnpm update better-auth
2. 临时缓解措施(如无法立即升级)
- 禁用受影响的插件:如果业务暂时不需要
oidcProvider或mcp插件,可以暂时在 Better Auth 配置中将其禁用。 - 加强令牌管理:
- 缩短
refresh_token有效期:尽可能缩短refresh_token的生命周期,降低泄露后的窗口时间。 - 严格监控
refresh_token使用:实施监控和告警规则,检测异常的refresh_token使用模式,例如频繁的refresh操作、不正常的 IP 来源等。
- 缩短
- 审查访问日志:检查应用程序日志,寻找来自异常来源的、对
/api/auth/oauth2/token或/api/auth/mcp/token端点的可疑请求,特别是那些缺少client_secret的refresh_token请求。
3. 审计与最佳实践
- 对所有使用 Better Auth 的授权流程进行安全审计,确保遵循 OAuth 2.0 和 OpenID Connect 协议的最佳实践。
- 确保所有机密客户端都正确配置并存储了
client_secret。
参考资料
- CVE 详情页 (NVD): https://nvd.nist.gov/vuln/detail/CVE-2026-53512
- CWE-287: Improper Authentication: https://cwe.mitre.org/data/definitions/287.html
- CWE-306: Missing Authentication for Critical Function: https://cwe.mitre.org/data/definitions/306.html
- CWE-345: Insufficient Verification of Data Authenticity: https://cwe.mitre.org/data/definitions/345.html
- CWE-863: Incorrect Authorization: https://cwe.mitre.org/data/definitions/863.html
- GitHub Advisory (原始来源): 建议在 GitHub 上搜索
security-advisories@github.com关于CVE-2026-53512的公告。