CVE-2026-71206: shiori: JWT CheckToken Never Re-Validates Account State, Allowing Stale-Privilege Access After Deletion or Demotion
Shiori's CheckToken function (internal/domains/auth.go) validates only the JWT's HMAC signature and returns the embedded claims.Account object unmodified, never re-fetching the account from the database. No session store or token-revocation mechanism exists in the codebase. Deleting an account or demoting it from owner to a regular role has no effect on tokens already issued to that account — a deleted or demoted owner's token continues authenticating with its original owner-level privileges until natural expiry, which can be up to 30 days with 'remember me' enabled.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Operational
Invalidate or rotate authentication material so that previously issued JWTs cannot continue authenticating with owner-level privileges for up to 30 days when 'remember me' is enabled (since no token revocation or session store mechanism exists in the codebase).