Description
Clerk JavaScript is the official JavaScript repository for Clerk authentication. has(), auth.protect(), and related authorization predicates in @clerk/shared, @clerk/nextjs, @clerk/backend, and other framework SDKs can return true for certain combined authorization checks when the result should be false, allowing a gated action to proceed for a user who does not satisfy the full set of requested conditions. This call shape can be bypassed if certain conditions are met: a has() or auth.protect() call that combines a reverification check with any of role, permission, feature, or plan, or that combines a billing check (feature or plan) with a role or permission check. This vulnerability is fixed in @clerk/clerk-js 5.125.10 and 6.7.5.
Problem types
CWE-754: Improper Check for Unusual or Exceptional Conditions
CWE-863: Incorrect Authorization
Product status
>= 6.0.0, < 6.7.5
>= 4.0.0, <= 4.8.2
>= 3.0.0, <= 3.2.13
>= 7.0.0, <= 7.2.3
>= 2.0.0, <= 2.0.15
>= 3.0.0, <= 3.0.17
>= 2.0.0, <= 2.2.4
>= 3.0.0, <= 3.1.3
>= 1.0.0, <= 1.1.3
>= 3.0.0, <= 3.1.14
>= 3.0.0, <= 3.1.15
>= 2.0.0, <= 2.1.5
References
github.com/...script/security/advisories/GHSA-w24r-5266-9c3c