Urgent.News

What's breaking now, across thousands of outlets.

Tech

Patching CVE-2026-114509: Laravel TokenGuard API Authentication Bypass

A critical authentication bypass vulnerability tracked as CVE-2026-114509 ( GHSA-f9x3-7vq9-cph6 ) affects Laravel applications running versions prior to 12.68.0 and 13.29.0 . When a route is protected by Laravel's standard token-based API guard ( TokenGuard ), the guard fails to validate that incoming credentials are strictly strings before passing them to the database query builder. Under common…

A critical authentication bypass vulnerability, identified as CVE-2026-114509 (GHSA-f9x3-7vq9-cph6), impacts Laravel applications running on versions earlier than 12.68.0 and 13.29.0. When a route is secured using Laravel's standard token-based API guard, known as TokenGuard, it does not accurately validate incoming credentials as strictly strings before forwarding them to the database query builder.

In common MySQL and MariaDB setups, an unauthenticated attacker can submit a specially crafted non-string payload, enabling them to circumvent token verification and gain unauthorized access to an existing user account. This vulnerability falls under the category of CWE-1287 (Improper Type Validation) and CWE-287 (Improper Authentication).

The affected versions include laravel/framework versions 12.68.0 and 13.0.0, as well as 13.29.0. The vulnerable component is Illuminate\Auth\TokenGuard, which is configured to use the token driver in the config/auth.php file.

When the application is set up with TokenGuard in the config/auth.php file, Laravel attempts to extract the token from various sources, such as the request query string, request body, or Bearer authorization header. If an attacker provides a JSON body or query parameter where the api_token is structured as an array or non-string primitive instead of a flat string, Laravel's TokenGuard may pass the non-string input directly into UserProvider::retrieveByCredentials().

This can lead to implicit type conversion or array-to-parameter binding quirks in MySQL or MariaDB, which subsequently evaluates the condition loosely and returns the first matching user record in the table.

To mitigate this threat, it is recommended to audit your application for exposure by running Composer's security audit in your project root, checking your current framework version, and inspecting config/auth.php to identify any guards using driver = "token". If your application relies on Laravel Sanctum (driver = "sanctum") or Laravel Passport (driver = "passport"), the issue does not directly affect your routes, but you should still update the laravel/framework dependency to ensure a clean dependency tree.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

Debugging Taught Me That Clever Code Is the Most Expensive Code

I once spent most of a day chasing a production bug that turned out to be caused by a “clever” one-liner in a shared utility.

  • Clever, complex code proved costly during debugging session.
  • Single line of shared utility code caused insurmountable challenge.
  • Future self or colleague should be able to modify without deciphering thought process.

After You Generate: Why the Marketing Root Is Not Your Asset Library

Most AI music sites teach the wrong first habit: they train you to return to the marketing root when you want last week’s track. The root is a sales document.

  • Marketing root serves as sales document, not for accessing generated tracks
  • Media library separates generated songs, covers, and videos
  • Distinction enhances user experience through appropriate tools and interfaces

More from Thursday 12 November →