IPBUF安全漏洞报告
English
CVE-2026-42560 CVSS 9.1 严重

CVE-2026-42560 go-pkgz/auth身份混淆漏洞

披露日期: 2026-05-09

漏洞信息

漏洞编号
CVE-2026-42560
漏洞类型
身份混淆
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
go-pkgz/auth

相关标签

身份混淆认证绕过OAuthgo-pkgz/auth权限提升

漏洞概述

go-pkgz/auth是一个支持OAuth2等认证方式的Go语言库。在受影响版本中,其Patreon OAuth提供程序存在严重逻辑缺陷,导致所有通过Patreon认证的用户账户被错误地映射到同一个本地用户ID,而非根据Patreon返回的唯一账户信息生成ID。这意味着应用无法区分不同的Patreon用户,导致所有用户身份被“折叠”为一个。攻击者可利用此漏洞实现跨账户访问、权限混乱以及订阅状态泄露。

技术细节

该漏洞的根本原因在于go-pkgz/auth库在处理Patreon OAuth2回调时,未能正确解析并利用Patreon API返回的唯一用户标识符(如User ID)作为本地数据库的主键。根据描述,代码逻辑错误地使用了静态值或非唯一标识,导致无论哪个Patreon用户登录,系统后端均将其识别为同一个本地用户。攻击利用过程非常简单,无需特殊payload。攻击者只需拥有任意有效的Patreon账户,并在使用受该库支持的应用程序中选择“使用Patreon登录”。登录成功后,由于系统将所有Patreon用户映射至同一身份,攻击者将立即获得该映射身份的所有权限和数据访问权。如果该身份此前已绑定管理员权限或其他用户的敏感数据,攻击者即可直接接管账户。

攻击链分析

STEP 1
侦察
攻击者确认目标应用程序使用了go-pkgz/auth库,并且启用了Patreon作为OAuth2登录提供商。
STEP 2
利用
攻击者注册或使用一个任意合法的Patreon账户。在目标应用程序的登录界面,攻击者点击“使用Patreon登录”并完成授权流程。
STEP 3
权限提升
由于漏洞导致所有Patreon账户被映射到同一个本地用户ID,攻击者登录后即获得该本地账户的完整权限。这可能包括访问其他用户的私人数据或执行管理员操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC Concept for CVE-2026-42560 * This demonstrates the vulnerable logic where all Patreon users * are mapped to the same local ID. */ package main import ( "fmt" "github.com/go-pkgz/auth" "github.com/go-pkgz/auth/provider" ) func main() { // Simulating the vulnerable behavior // In the vulnerable version, the provider might ignore the // unique ID returned by Patreon and return a constant. user1 := provider.User{Name: "Attacker", ID: "patreon_user_123"} user2 := provider.User{Name: "Victim", ID: "patreon_user_456"} // Vulnerable mapping logic (pseudo-code) vulnerableMapID := func(u provider.User) string { // BUG: Returns a hardcoded ID instead of u.ID return "hardcoded_local_user_id" } id1 := vulnerableMapID(user1) id2 := vulnerableMapID(user2) fmt.Printf("User1 Local ID: %s\n", id1) fmt.Printf("User2 Local ID: %s\n", id2) if id1 == id2 { fmt.Println("[!] Vulnerability Confirmed: Identity Confusion detected!") } }

影响范围

go-pkgz/auth >= 1.18.0, < 1.25.2
go-pkgz/auth >= 2.0.0, < 2.1.2

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用应用程序中的Patreon OAuth登录功能,以防止未经授权的账户访问。

参考链接