🔴 严重 | CVE-2026-53513 — Better Auth is an authentication and authorization...
🔴 【深度分析】严重安全漏洞:CVE-2026-53513
CVSS 评分: 严重(9.6)🔴 状态: Analyzed 发布时间: 2026-07-15
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-53513 |
| CVSS 评分 | 9.6 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N |
| CWE 分类 | CWE-20,CWE-345,CWE-441,CWE-918 |
| 发布时间 | 2026-07-15 |
| 最后更新 | 2026-07-21 |
| 状态 | Analyzed |
| 数据来源 | security-advisories@github.com |
好的,作为一名资深网络安全分析师,我将基于您提供的 NVD 数据,为您生成一篇关于 CVE-2026-53513 的深度分析文章。
🚨 漏洞深度分析:CVE-2026-53513 - Better Auth SSO 插件中的服务器端请求伪造与账户接管风险
⚠️ CVSS 9.6 (严重)
CVSS 向量:CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N
漏洞概述
CVE-2026-53513 是一个存在于 Better Auth 开源认证库(TypeScript)的 @better-auth/sso 单点登录插件中的严重安全漏洞。该漏洞允许已认证的攻击者在特定配置下,利用 SSO 单点登录功能发起非盲板(Non-blind)的服务器端请求伪造(SSRF)攻击。成功利用此漏洞可导致敏感信息泄露(高影响:C:H)和账户伪造/劫持(高影响:I:H),尽管不直接影响可用性(A:N)。
根本原因在于,当 SSO 插件配置为 skipDiscovery: true 模式时,其提供的 /sso/register 和 /sso/update-provider API 端点未能对攻击者提交的 OIDC 配置(如 userInfoEndpoint, tokenEndpoint, jwksEndpoint)URL 进行充分的服务端验证。
受影响组件与版本
- 受影响组件:
@better-auth/sso插件 - 受影响的库: Better Auth
- 受影响版本: 所有低于 1.6.11 的版本
- 修复版本: 1.6.11 及以上版本
漏洞原理分析
攻击向量分析
根据 CVSS 向量(AV:N/AC:L/PR:L/UI:N/S:C),该漏洞的攻击路径清晰且利用难度较低:
- 攻击向量(AV: N):攻击者通过网络即可发起攻击,无需物理接触目标服务器。
- 攻击复杂度(AC: L):攻击者无需特殊的技巧或复杂的环境,仅需在调用 API 时提供恶意的 URL。
- 所需权限(PR: L):攻击者需要拥有一个有效的、能够调用 SSO 管理 API 的认证凭据(通常是拥有配置 SSO 提供商权限的用户)。
- 用户交互(UI: N):攻击链完全由攻击者主导,无需受害者(如普通用户)进行任何操作。
- 作用域变更(S: C):漏洞利用不仅影响目标应用本身,还可能导致 SSO 提供商元数据(如 OIDC 配置、JWKS 密钥)被篡改,从而影响与攻击者控制的恶意 IdP 交互的所有用户。
技术细节
漏洞的核心在于 Better Auth SSO 插件的一个配置选项 skipDiscovery: true。在标准的 OIDC 流程中,服务提供方(SP,即 Better Auth 应用)会通过 OIDC 发现过程从身份提供方(IdP)的 /.well-known/openid-configuration 端点获取所有必要端点的 URL。skipDiscovery: true 的设计初衷是允许管理员手动指定这些端点 URL,以适应不支持自动发现的 IdP 或进行自定义配置。
然而,该功能在实现上存在缺陷:
缺乏源验证(CWE-441, CWE-20):
POST /sso/register(注册新 SSO 提供商)和POST /sso/update-provider(更新现有提供商配置)端点接收用户提交的oidcConfig.userInfoEndpoint、tokenEndpoint和jwksEndpointURL。代码将这些 URL 直接存储 到数据库的ssoProvider记录中,没有对其来源(域名、IP 地址)进行任何类型的校验。任何通过认证的用户都可以提供指向内网 IP(如http://169.254.169.254/latest/meta-data/)、本地主机(http://127.0.0.1:8080/admin)或其他敏感内部服务的 URL。非盲板 SSRF(CWE-918):当合法的用户(或攻击者伪装成的用户)尝试通过该被篡改的 SSO 提供商进行 OIDC 回调时,Better Auth 服务端会主动去读取数据库中存储的这些恶意 URL。这意味着:
- tokenEndpoint:服务端将向该 URL 发送请求以换取令牌,并将其响应解析为 OAuth 令牌。
- userInfoEndpoint:服务端将向该 URL 发送请求获取用户信息。
- jwksEndpoint:服务端将向该 URL 发送请求获取 JSON Web Key Set (JWKS) 来验证 token。
由于服务端会处理这些请求的响应,攻击者可以:
- 信息泄露(C:H):通过
SSRF技术读取云服务元数据、内部服务响应等。 - 账户操纵(I:H):这是最危险的场景。如果同时配置了
trustEmailVerified: true,攻击者可以:- 架设一个攻击者控制的恶意 OIDC 提供商。
- 向
userInfoEndpoint返回一个包含任意邮箱地址(例如admin@victim-company.com)的用户信息。 - 由于 Better Auth 信任了该提供商返回的已验证邮箱(
trustEmailVerified: true),它就会将攻击者的本地账户与目标邮箱对应的合法账户进行关联(Account Linking),从而实现账户接管(Account Takeover)。
影响评估
- 实际威胁: 极高。漏洞利用条件相对容易满足(只需有效用户权限和具备
skipDiscovery配置的 SSO 功能)。攻击者一旦得手,可以实现以下严重后果:- SSRF 攻击:探测和攻击内网服务,获取云环境敏感凭据。
- 账户冒充:通过控制 SSO 回调信息,使系统将任何用户与攻击者控制的账户绑定,从而以受害者身份登录。
- 令牌伪造:通过控制
jwksEndpoint提供伪造的公钥,使服务端信任攻击者签发的任意 JWT 令牌。
- 攻击复杂度: 低。利用了标准 API 输入验证缺失问题。
- 所需权限: 低。需要具有配置 SSO 提供商权限的普通用户账号。
- 潜在后果: 数据泄露、账户接管、横向移动、内部网络侦察等。
修复建议
推荐方案(升级)
立即将 Better Auth 库升级到 1.6.11 或更高版本。
这是最根本、最直接的修复方式。该版本已针对 /sso/register 和 /sso/update-provider API 端点添加了对 userInfoEndpoint, tokenEndpoint, 和 jwksEndpoint 等 URL 参数的来源验证机制。
临时缓解措施(如果无法立即升级)
- 禁用
skipDiscovery配置:如果业务上允许,尽量使用 OIDC 的标准发现机制,而不是手动配置端点。将 SSO 提供商配置为skipDiscovery: false可以避免此漏洞。 - 限制用户权限:严格审查和管理能够配置 SSO 提供商的用户账户。对此类管理员权限进行最小权限原则(PoLP)管理,减少潜在的攻击面。
- 部署 WAF 规则:在 Web 应用防火墙(WAF)或反向代理(如 Nginx, HAProxy)层面配置规则,对
POST到/sso/register和/sso/update-provider接口的请求体进行深度包检测:- 拒绝
oidcConfig参数中包含内网 IP 地址(如10.x.x.x,192.168.x.x,172.16-31.x.x,127.x.x.x)或云服务元数据地址(如169.254.169.254)的请求。 - 对 URL 中的域名进行白名单校验,仅允许可信任的、已知的 IdP 服务域名。
- 拒绝
- 加强监控与告警:
- 监控对
/sso/register和/sso/update-provider接口的异常调用,特别是短时间内多次修改配置的行为。 - 监控服务器对异常内网 IP 的外连请求,这可能是 SSRF 攻击的证据。
- 监控对
参考资料
- CVE 详情页: https://nvd.nist.gov/vuln/detail/CVE-2026-53513
- 相关 CWE 分类:
- Better Auth 安全公告 (建议参考其 CHANGELOG 或 GitHub Security Advisories):由于数据来源为
security-advisories@github.com,建议密切关注 Better Auth 项目的 GitHub 仓库中的安全公告页面,获取最新、最详细的补丁信息。