<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cve-2026-39976 — CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/tags/cve-2026-39976/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 09 Apr 2026 17:16:31 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/cve-2026-39976/feed.xml" rel="self" type="application/rss+xml"/><item><title>Laravel Passport Authentication Bypass Vulnerability (CVE-2026-39976)</title><link>https://feed.craftedsignal.io/briefs/2026-04-laravel-auth-bypass/</link><pubDate>Thu, 09 Apr 2026 17:16:31 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-04-laravel-auth-bypass/</guid><description>Laravel Passport versions 13.0.0 before 13.7.1 contain an authentication bypass vulnerability (CVE-2026-39976) where machine-to-machine tokens can authenticate as a real user due to improper validation of the JWT sub claim.</description><content:encoded><![CDATA[<p>Laravel Passport, an OAuth2 server implementation for Laravel, is vulnerable to an authentication bypass (CVE-2026-39976) in versions 13.0.0 up to, but not including, 13.7.1. The vulnerability stems from the <code>league/oauth2-server</code> library, where the JWT <code>sub</code> claim is set to the client identifier for <code>client_credentials</code> tokens, as there is no associated user. Subsequently, the token guard uses this client identifier to retrieve user information via <code>retrieveById()</code> without proper validation, potentially resolving and authenticating an unrelated, real user. This means any machine-to-machine token can inadvertently authenticate as an actual user within the Laravel application. The vulnerability is resolved in Laravel Passport version 13.7.1. This allows attackers to perform actions with the privileges of the authenticated user.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker obtains a valid <code>client_credentials</code> token issued by Laravel Passport (versions 13.0.0 - 13.7.0). This could be a token intended for machine-to-machine communication.</li>
<li>The attacker sends a request to a protected endpoint of the Laravel application, including the <code>client_credentials</code> token in the <code>Authorization</code> header.</li>
<li>The Laravel Passport token guard extracts the JWT <code>sub</code> claim from the token. In vulnerable versions, this <code>sub</code> claim contains the client identifier.</li>
<li>The token guard calls <code>retrieveById()</code> using the client identifier from the <code>sub</code> claim as the user ID.</li>
<li>Due to the lack of validation, <code>retrieveById()</code> queries the user database, potentially finding a user whose ID matches the client identifier.</li>
<li>If a user with the matching ID is found, the application authenticates the request as that user, granting the attacker their privileges.</li>
<li>The attacker can then access resources and perform actions as the authenticated user.</li>
<li>The attacker exploits the user&rsquo;s privileges to compromise data or perform unauthorized actions within the application.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of CVE-2026-39976 allows attackers to bypass authentication and gain unauthorized access to user accounts in Laravel applications using affected versions of Laravel Passport. This can lead to data breaches, privilege escalation, and other malicious activities, depending on the privileges of the compromised user accounts. The severity of the impact depends on the application&rsquo;s functionality and the sensitivity of the data it handles. Potentially all applications using Laravel Passport for authentication are vulnerable.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Upgrade Laravel Passport to version 13.7.1 or later to patch CVE-2026-39976.</li>
<li>Implement additional validation within the application&rsquo;s authentication logic to verify that the user ID extracted from the JWT <code>sub</code> claim corresponds to a valid user, especially when using <code>client_credentials</code> tokens.</li>
<li>Monitor application logs for unexpected authentication events or API requests originating from machine-to-machine tokens that are being authenticated as users. The <code>webserver</code> log source can be used for this monitoring.</li>
<li>Deploy the Sigma rule provided to detect requests to protected endpoints with <code>client_credentials</code> tokens that are incorrectly authenticated as users.</li>
</ul>
]]></content:encoded><category domain="severity">high</category><category domain="type">advisory</category><category>cve-2026-39976</category><category>laravel</category><category>oauth2</category><category>authentication bypass</category></item></channel></rss>