Under certain MySQL or MariaDB configurations a crafted non-string token can match an unintended user, so an unauthenticated attacker can take over an account on routes the guard protects. Laravel fixed it in 12.68.0 and 13.29.0. Laravel published the advisory on GitHub on 19 October 2026.
What it allows
Laravel's built-in TokenGuard reads an API token from a request and looks up the user who owns it. The advisory says that, when an app uses the standard token-based API guard, an attacker can send a crafted value that is not a string. That lets the attacker authenticate as another existing user without knowing that user's token. It describes the result as authentication bypass and account takeover on any route the guard protects. The attacker needs no login. It is a form of account takeover.
What the Guard Did Wrong
The commit that fixes it shows the gap. Before the fix, the guard's user() method only tested that the token was not empty. An array with one item passes that test. The fix adds a check that the token is a string, and the same change makes validate() reject any credential that is not a string. The advisory says that under certain MySQL and MariaDB configurations the database lookup then matches an unintended user record. It does not name the configurations or publish the exploit detail.
In ATT&CK terms the closest entry is Valid Accounts (T1078), which MITRE describes as abusing the credentials of existing accounts. This flaw reaches a similar result without the credential, so treat the label as approximate.
What Our Checks Showed
GitHub: seven public repositories dedicated to the flaw turned up in our search on 31 October, up from three on 24 October. The first, created on 20 October 2026 about 12 hours after the advisory, holds a lab and a script, its README says. Later READMEs describe more labs, a tool that scans lists of target URLs and a version checker without an exploit. We read them and did not run or link them.
X: our search returned 28 unique public posts from 19 to 23 October. Hakai Security, a security company, posted on 20 October that its team published a working proof of concept and exploit. Italy's national CSIRT said on 22 October that a proof of concept is available, and the national cybersecurity agency ACN published the matching alert.
Brandefense Blackhole: from 24 to 31 October it recorded five posts about the flaw, all in one Telegram channel that relays new GitHub repositories. Two of the repositories those posts announced have since been deleted from GitHub or made private.
Our Laravel TokenGuard news post walks through the request path, the two-line fix and the checks.
Who is affected
The advisory lists laravel/framework versions below 12.68.0 and below 13.29.0. The CVE record lists below 12.68.0, and 13.0.0 up to below 13.29.0. The fixed versions are 12.68.0 and 13.29.0. The flaw applies only when the app uses the standard token-based API guard, which is a guard in config/auth.php whose driver is token.
- Apps with a token guard on
auth:routes and users in MySQL or MariaDB. The advisory limits the flaw to certain configurations of these two databases. - Older apps. In the laravel/laravel skeleton, tag v8.5.0 defined an
apiguard with drivertoken. From tag v8.6.0 on, the skeleton lists only thewebsession guard.
Not Described by the Advisory
The advisory does not mention Sanctum or Passport. Laravel's documentation says Sanctum uses a sanctum guard and Passport uses a guard with the driver passport.
Older Laravel Lines
Laravel's support policy page says security fixes for Laravel 11 ended on 12 March 2026 and for Laravel 10 on 4 February 2025. Laravel 12 gets them until 24 February 2027 and Laravel 13 until 17 March 2028. The advisory names no fixed 10.x or 11.x release. A tag v11.56.1, dated 25 August 2026, carries the new check.
The Sibling Advisory
GHSA-5wcm-3v2w-8362 (CVE-2026-114508), "Unauthorized Data Destruction", was published 11 seconds later and is rated medium. It lists 12.68.0 as fixed on the 12.x line and 13.27.0 on 13.x.
Timeline
- 25 Aug 2026
Two commits titled "fix token retrieval" change TokenGuard.php, and Laravel tags v12.68.0 and v13.29.0 the same day. A tag v11.56.1 is dated the same day.
- 19 Oct 2026
Laravel publishes advisory GHSA-f9x3-7vq9-cph6 on GitHub, rated critical with a CVSS 4.0 score of 9.2. The reporter is credited as KIKOmanasijev. A second advisory, GHSA-5wcm-3v2w-8362, appears 11 seconds later.
- 20 Oct 2026
The first of the public GitHub repositories our search found is created, about 12 hours after the advisory. Hakai Security posts on X that its team published a working proof of concept and exploit.
- 21 Oct 2026
The CVE record is published in NVD with CWE-287 and CWE-1287. The advisory is updated the same day.
- 22 Oct 2026
Italy's national CSIRT says on X that a proof of concept is available, and ACN publishes alert AL02/261022 on its site.
- 28 Oct 2026
CISA adds its Vulnrichment assessment to the CVE record, and NVD updates its copy. It rates exploitation as "none", automatable as "no" and technical impact as "total".
What to do
-
Check the version
Run composer show laravel/framework. Versions below 12.68.0 or below 13.29.0 fall in the advisory's ranges.
-
Find the guard
Open config/auth.php and look under guards for a driver named token. Then run php artisan route:list -v to find routes that use auth: followed by that guard's name.
-
Update the framework
Move to 12.68.0 or later on 12.x, or to 13.29.0 or later on 13.x, then run composer show laravel/framework again to confirm.
-
Plan for older lines
On Laravel 11 or 10 the policy page lists no security fixes any more and the advisory names no fixed release. Plan the move to a supported line.
-
Review your logs
Choose a window that starts at the 25 August commit date or the 19 October advisory date. Search application or proxy logs for requests where api_token arrived as a list, and review sign-ins on accounts that serve API routes.
-
Remove an unused guard
If no route uses the token guard, remove it from config/auth.php so nothing is left to bypass.
What Brandefense can do
- Scan your domain in Brandefense Atlas, free
Atlas checks public sources for leaked credentials, phishing domains, dark web mentions and data sales, then gives your domain a risk grade. Free, no sign-up.
- Vulnerability intelligence platform
Brandefense Vulnerability Intelligence follows which vulnerabilities attackers are using, so your team can patch what is under attack first.
Frequently Asked Questions
Which versions fix CVE-2026-114509?
The advisory names laravel/framework 12.68.0 and 13.29.0 as fixed.
Does it affect Laravel Sanctum or Passport?
The advisory covers the built-in TokenGuard and does not mention Sanctum or Passport. Laravel's documentation says Sanctum uses its own sanctum guard and Passport uses the passport driver.
Does it need MySQL or MariaDB?
The advisory says the lookup mishandles the value under certain MySQL and MariaDB configurations. It does not describe other databases and does not name the configurations.
Is CVE-2026-114509 on the CISA KEV list?
It was not in the catalog as of its 30 October 2026 update.
Is public exploit code available?
GitHub repositories created from 20 October describe proof of concept code. Hakai Security says it published a working proof of concept and exploit. CSIRT Italia said on 22 October that one is available. We have not run any of it.
How does it relate to CVE-2026-114508?
It is a separate advisory published 11 seconds later, rated medium, about data destruction through a read endpoint. 12.68.0 is the fixed version on 12.x for both.
Sources
- GHSA-f9x3-7vq9-cph6: Token-based API guard Auth BypassLaravel on GitHub
- CVE-2026-114509NVD
- CVE-2026-114509CVE Program
- Fix commit 9b21ce0: fix token retrievalLaravel on GitHub
- GHSA-5wcm-3v2w-8362: Unauthorized Data DestructionLaravel on GitHub
- Alert AL02/261022/CSIRT-ITA: Laravel PoC for CVE-2026-114509ACN
- Known Exploited Vulnerabilities catalogCISA
- T1078 Valid AccountsMITRE ATT&CK