CVE-2026-39976

Laravel Passport's TokenGuard Authenticates Unrelated User for Client Credentials Tokens

HIGH
7.1
CVSS Score
Published: April 9, 2026 at 04:50 PM UTC
Updated: October 26, 2026 at 09:10 PM UTC
1 product affected across 1 vendorPassport

Using passport by laravel?

Get instant alerts when new vulnerabilities affect passport - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
HIGH7.1
Exploit prediction
EPSS 0.3%
SSVC
No known exploit

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

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

13.0.0 ≤ v < 13.7.1
Affected range stops below 13.7.1, so it looks safe — our inference, not a vendor statement

References (5)

x_refsource_CONFIRMMitigationVendor Advisory
Source: cverecord
https://github.com/laravel/passport/security/advisories/GHSA-349c-2h2f-mxf6
x_refsource_MISCExploitIssue Tracking
Source: cverecord
https://github.com/laravel/passport/issues/1900
x_refsource_MISCIssue TrackingPatch
Source: cverecord
https://github.com/laravel/passport/pull/1901
x_refsource_MISCIssue TrackingPatch
Source: cverecord
https://github.com/laravel/passport/pull/1902

SSVC — Action Prioritization

SSVCNo known exploitNot automatablePartial impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

7.1HIGHGitHub_M
Attack Vector
NETWORK
Complexity
HIGH
Privileges
LOW
User Interaction
NONE
Scope
CHANGED
Confidentiality
HIGH
Integrity
LOW
Availability
NONE
Vector?

Quick Info

StatusANALYZED
CWE
CWE-287

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card