Vulnerability

Laravel TokenGuard Authentication Bypass (CVE-2026-114509)

An authentication bypass in the built-in TokenGuard of laravel/framework.

CVE ID
CVE-2026-114509
CVSS
9.2 Critical (CVSS 4.0, GitHub advisory)
Affected product
laravel/framework, built-in TokenGuard (token-based API guard)
Exploited
Unknown
Published
19 October 2026

In short

CVE-2026-114509 is an authentication bypass in the built-in TokenGuard of laravel/framework. 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.

Profile MapVulnerability
  1. CVECVE-2026-114509
  2. ProductLaravel laravel/framework, built-in TokenGuard (token-based API guard)
  3. Fix Steps6actions listedCheck the version · Find the guard

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: three public repositories about the flaw turned up in our search on 24 October. The first was created on 20 October 2026, about 12 hours after the advisory. Its README says it holds a lab with a vulnerable and a patched app plus a script. 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.

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 api guard with driver token. From tag v8.6.0 on, the skeleton lists only the web session 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

  1. 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.

  2. 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.

  3. 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.

  4. 21 Oct 2026

    The CVE record is published in NVD with CWE-287 and CWE-1287. The advisory is updated the same day.

  5. 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.

What to do

  1. Check the version

    Run composer show laravel/framework. Versions below 12.68.0 or below 13.29.0 fall in the advisory's ranges.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. Remove an unused guard

    If no route uses the token guard, remove it from config/auth.php so nothing is left to bypass.

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 23 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.

In our research

  1. Laravel Authentication Bypass: A Two-Line Fix in August, the Advisory in October October 2026

Sources

  1. GHSA-f9x3-7vq9-cph6: Token-based API guard Auth Bypass Laravel on GitHub
  2. CVE-2026-114509 NVD
  3. CVE-2026-114509 CVE Program
  4. Fix commit 9b21ce0: fix token retrieval Laravel on GitHub
  5. Fix commit 8dbb08b: fix token retrieval Laravel on GitHub
  6. Release v12.68.0 Laravel on GitHub
  7. Release v13.29.0 Laravel on GitHub
  8. GHSA-5wcm-3v2w-8362: Unauthorized Data Destruction Laravel on GitHub
  9. Release notes and support policy Laravel documentation
  10. Laravel Sanctum Laravel documentation
  11. Laravel Passport Laravel documentation
  12. Alert AL02/261022/CSIRT-ITA: Laravel PoC for CVE-2026-114509 ACN
  13. Hakai Security post on X, 20 October 2026 Hakai Security
  14. CSIRT Italia post on X, 22 October 2026 CSIRT Italia
  15. Known Exploited Vulnerabilities catalog CISA
  16. T1078 Valid Accounts MITRE ATT&CK