Cyber Resilience

CVE-2026-39976

Auth Bypass in Laravel Passport 13.0.0 – 13.7.1

Public PoCAuth Bypass
Published
09 April 2026
Modified
02 June 2026
Patch / advisory
CVSS Score v3.1 7.1
Click a component to see what it means
Raw vectorCVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N
EPSS Score 0.0029 21th percentile
Risk Priority 49 floored blend · peak EPSS

Summary

CVE-2026-39976 is a high-severity Improper Authentication (CWE-287) vulnerability in Laravel Passport. Its CVSS base score is 7.1 (High).

Operationally, exploitation aligns with the MITRE ATT&CK technique External Remote Services (T1133); ranked at the 21th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.

The strongest mitigations our analysis identified map to IA-2 (Identification and Authentication (Organizational Users)) and IA-3 (Device Identification and Authentication) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

CVE-2026-39976 is an authentication bypass vulnerability in Laravel Passport, a package that provides OAuth2 server support for Laravel applications. It affects versions from 13.0.0 through 13.7.0, stemming from an interaction with the league/oauth2-server library. In client_credentials grant flows, the library sets the JWT subject (sub) claim to the client identifier since no user is involved. Laravel Passport's token guard then passes this client ID directly to the user provider's retrieveById() method without validating whether it corresponds to an actual user ID, potentially resolving and authenticating an unrelated real user account.

An attacker with low privileges (PR:L) who possesses a valid machine-to-machine client_credentials token can exploit this over the network (AV:N) without user interaction (UI:N). By crafting or using a token where the client ID matches an existing user ID, the attacker authenticates as that user, achieving high confidentiality impact (C:H) such as accessing sensitive user data, with low integrity impact (I:L) and no availability impact (A:N). The attack requires high complexity (AC:H) due to the need for ID collision, but scope changes to changed components (S:C), earning a CVSS v3.1 base score of 7.1 and mapping to CWE-287 (Improper Authentication).

Advisories and patches, detailed in GitHub security advisory GHSA-349c-2h2f-mxf6 and related issues/pull requests in laravel/passport and thephpleague/oauth2-server repositories, confirm the fix in Laravel Passport version 13.7.1. Security practitioners should upgrade to 13.7.1 or later to mitigate the issue, as no workarounds are specified in the provided references.

OWASP Top 10 for Web (2025)

EU & UK References

Vulnerability Data

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…

more

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.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1133 External Remote Services Persistence
Adversaries may leverage external-facing remote services to initially access and/or persist within a network.
T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
T1040 Network Sniffing Credential Access
Adversaries may passively sniff network traffic to capture information about an environment, including authentication material passed over the network.
T1134 Access Token Manipulation Stealth
Adversaries may modify access tokens to operate under a different user or system security context to perform actions and bypass access controls.
T1185 Browser Session Hijacking Collection
Adversaries may take advantage of security vulnerabilities and inherent functionality in browser software to change content, modify user-behaviors, and intercept information as part of various browser session hijacking techniques.
T1505.003 Web Shell Persistence
Adversaries may backdoor web servers with web shells to establish persistent access to systems.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2023-31279Shared CWE-287
CVE-2026-56353Shared CWE-287
CVE-2024-49039Shared CWE-287
CVE-2025-3850Shared CWE-287
CVE-2025-65128Shared CWE-287
CVE-2022-41678Shared CWE-287
CVE-2025-6044Shared CWE-287
CVE-2023-6353Shared CWE-287
CVE-2026-14919Shared CWE-287
CVE-2021-33044Shared CWE-287

Affected Assets

laravel
passport
13.0.0 — 13.7.1

Mitigating Controls

Control response

Prevent
Stop it (NIST 800-53)

Detect
Catch it (NIST detect / respond)

Harden
Shrink the surface (DISA STIG)
  • 8 hardening rules · 5 OS baselines
Validate
Prove the fix (OWASP ASVS)
  • V6.4.4
  • V6.5.4
  • V6.5.5
  • V6.5.7

Mitigating Controls (NIST 800-53 r5) AI

Mandates unique identification and authentication of organizational users before access, directly stopping improper authentication.

Requires unique identification and authentication of devices before establishing connections, preventing unauthenticated device claims.

Mandates unique identification and authentication of non-organizational users, directly addressing the weakness for external actors.

Manages authenticators with verification and secure distribution, reducing opportunities for improper authentication.

Enforces access only after approved authorizations, which presupposes correct authentication has occurred.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.AA-03 mostly match
prevents

PR.AA-03 directly enforces authentication mechanisms that eliminate most improper-authentication defects, yet CWE-287 spans additional vectors (missing checks, flawed protocols, session handling) that one control does not fully close.

PR.AA-04 mostly match
prevents

PR.AA-04 directly enables verification of identity assertions (mostly preventing CWE-287 in that scope) yet leaves many other authentication failure modes unaddressed (only partial prevention overall).

PR.AA-01 partial match
prevents

PR.AA-01 supplies and governs credentials/tokens that authentication relies on, removing some weak-credential cases, yet leaves verification logic, missing checks, and protocol flaws untouched.

PR.AA-02 partial match
prevents

PR.AA-02 ensures valid enrollment and unique credential binding, which reduces some improper-auth risks at issuance time but leaves runtime claim verification untouched, so each direction only partially addresses the other.

PR.PS-01 partial match
prevents

PR.PS-01 can enforce auth-related settings via hardened baselines and default reviews, blocking some config-based instances of CWE-287, yet leaves code-level auth flaws untouched so neither direction reaches mostly.

PR.PS-02 partial match
prevents

Patching/maintenance can remediate some known auth vulnerabilities after deployment (partial forward) but does not address the design or implementation of authentication logic itself (none reverse).

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

prevents

Requiring authentication methods whose strength matches the sensitivity of the data and mandating multi-factor authentication directly blocks attempts to access resources without proving identity.

prevents

Verifying user identity before issuing replacement credentials and forcing changes after compromise reduces the likelihood that authentication bypass can be achieved through stolen or weak credentials.

prevents

Mandating segregated approval and oversight for non-human identities reduces the chance that weak or orphaned credentials can be exploited for unauthorized authentication.

mitigates

Requiring authentication mechanisms and technical parameters for secure connections ensures that network services verify user identity before granting access, preventing exploitation of missing or weak authentication.

prevents

Security requirements specified early and verified through testing drive the consistent implementation of authentication mechanisms, decreasing the likelihood that authentication steps are omitted or incorrectly applied.

prevents

Defining the required level of trust in entity identity and the authentication mechanisms to achieve it ensures that authentication is explicitly addressed rather than omitted.

Hardening callouts derived

Configuration rules from DISA STIG baselines that bear on weaknesses of the type cited by this CVE. Each rule is shown with the relationship its mapping actually records, against the CWE it was authored against. Derived via CVE→CWE over `controls_xwalks` (authoritative rows only; rows rated `none` are excluded).

Oracle Linux 8 (1 rule)
  • V-248827 OL 8 must not have the rsh-server package installed. prevents CWE-287
RHEL 7 (3 rules)
  • V-204425 The Red Hat Enterprise Linux operating system must be configured so that the SSH daemon does not allow authentication using an empty password. prevents CWE-287
  • V-204442 The Red Hat Enterprise Linux operating system must not have the rsh-server package installed. prevents CWE-287
  • V-204424 The Red Hat Enterprise Linux operating system must not allow accounts configured with blank or null passwords. prevents CWE-287
RHEL 8 (1 rule)
  • V-230492 RHEL 8 must not have the rsh-server package installed. prevents CWE-287
Ubuntu 22.04 (1 rule)
  • V-260470 Ubuntu 22.04 LTS, when booted, must require authentication upon booting into single-user and maintenance modes. prevents CWE-287
Ubuntu 24.04 (2 rules)
  • V-270675 Ubuntu 24.04 LTS when booted must require authentication upon booting into single-user and maintenance modes. prevents CWE-287
  • V-270714 Ubuntu 24.04 LTS must not allow accounts configured in Pluggable Authentication Modules (PAM) with blank or null passwords. prevents CWE-287

References