CVE-2026-43983: Pocket ID: OIDC refresh token flow bypasses authorization revocation, account disabling, and group restrictions
The createTokenFromRefreshToken function (oidc_service.go:451) validates the refresh token’s cryptographic integrity but does not re-validate the user’s current authorization state before issuing new tokens. This allows three bypasses:
Authorization revocation bypass: After a user revokes an OIDC client’s authorization, the client can continue refreshing tokens indefinitely because
RevokeAuthorizedClientdoes not delete associated refresh tokens, and the refresh flow does not check if the authorization record still exists.Disabled user bypass: After an admin disables a user account, pre-existing refresh tokens continue to work because the OIDC token endpoint does not check
user.Disabled. Session-based access is properly blocked by auth middleware, but the OIDC refresh path bypasses it entirely.Group restriction bypass: After removing a user from an OIDC client’s allowed user groups, the refresh token continues to work because
createTokenFromRefreshTokendoes not callIsUserGroupAllowedToAuthorize.
Each refresh rotates the token with a fresh 30-day expiry, enabling perpetual access.
References
Code Behaviors & Features
Detect and mitigate CVE-2026-43983 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →