CVE-2026-43983Pocket ID是一个基于通行密钥的OIDC提供商。在2.6.0版本之前,其`createTokenFromRefreshToken`函数存在逻辑缺陷。该函数仅验证了刷新令牌的加密完整性,而在签发新令牌时未重新验证用户的授权状态。这导致在授权被撤销、账户被禁用或客户端被移除组后,攻击者仍可无限期使用刷新令牌获取有效身份凭证,造成权限维持风险。
漏洞根源在于Pocket ID在处理OIDC刷新令牌请求时的逻辑不严谨。具体来说,`oidc_service.go`文件中的`createTokenFromRefreshToken`函数虽然正确执行了加密签名校验,以防止令牌被篡改,但在通过校验后直接签发了新的访问令牌,缺失了对后端数据库中用户当前状态(如账户是否启用、授权是否依然有效、组成员关系是否存在)的二次校验环节。攻击者利用此漏洞,只需持有一次获取的有效刷新令牌,即可绕过后续的权限回收机制。即使管理员执行了撤销操作,由于系统不再验证上下文状态,旧的令牌仍被视为有效。这违背了OAuth 2.0中关于令牌刷新应当检查客户端状态的安全建议,允许攻击者持续维持对系统的非法访问权限,严重破坏了身份认证与授权模型的可控性。