What’s Vulnerable › Vulnerabilities
CVE-2026-39976: Laravel Passport's TokenGuard Authenticates Unrelated User for Client Credentials Tokens
- Severity: high (CVSS 7.1 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.3% probability of exploitation in the next 30 days
- Public exploit or detection template: yes
- Published: 2026-04-09 · updated 2026-10-26
- Weakness: CWE-287
Description
Laravel Passport provides OAuth2 server support to Laravel. From 13.0.0 to before 13.7.1, there is an Authentication Bypass for client_credentials tokens. the league/oauth2-server library sets the JWT sub claim to the client identifier (since there's no user). The token guard then passes this value to retrieveById() without validating it's actually a user identifier, potentially resolving an unrelated real user. Any machine-to-machine token can inadvertently authenticate as an actual user. This vulnerability is fixed in 13.7.1.
Affected products
- laravel passport: from 13.0.0 before 13.7.1 — fixed in 13.7.1
How to fix
Upgrade to a fixed version: laravel passport 13.7.1. Check the vendor advisory for mitigations.
References
- https://github.com/laravel/passport/issues/1900
- https://github.com/laravel/passport/pull/1901
- https://github.com/laravel/passport/pull/1902
- https://github.com/laravel/passport/security/advisories/GHSA-349c-2h2f-mxf6
- https://github.com/thephpleague/oauth2-server/issues/1456#issuecomment-2734989996
Get alerted when CVE-2026-39976 or the next vulnerability affects your stack