Kritiskt säkerhetshål i Laravels TokenGuard: uppdatera nu

Ett kritiskt hål i Laravels TokenGuard kan låta en angripare logga in som en annan användare. Uppdatera till Laravel 12.68.0 eller 13.29.0.

Den 19 oktober publicerade Laravel ett säkerhetsmeddelande om ett kritiskt säkerhetshål i ramverkets inbyggda TokenGuard. Hålet har nu fått beteckningen CVE-2026-114509 och klassas som kritiskt med 9,2 av 10 enligt CVSS 4.0. En angripare som inte är inloggad kan logga in som en befintlig användare utan att känna till användarens API-token. Felet är åtgärdat i Laravel 12.68.0 och 13.29.0.

Vad är problemet?

TokenGuard är den guard som används när en guard i config/auth.php har drivrutinen token. Den läser en API-token från anropet, som standard från parametern api_token eller en Bearer-header, och letar upp användaren med den i databasen. Före fixen kontrollerade TokenGuard inte att värdet verkligen var en textsträng. Enligt säkerhetsmeddelandet kan en angripare skicka ett specialutformat värde som inte är en sträng, till exempel en array, och under vissa databaskonfigurationer med MySQL eller MariaDB matchar uppslaget då en annan användare i stället för att inloggningen misslyckas.

Följden blir att angriparen kan ta över konton på alla routes som skyddas av den drabbade guarden. Angreppet sker via webbapplikationen och inte direkt mot databasen, så en brandvägg som stänger databasen utifrån skyddar inte. Rättningen, som finns i Laravels kodförråd, gör att TokenGuard avvisar allt som inte är en sträng innan något uppslag görs.

Vem påverkas?

  • Påverkade versioner: alla versioner av laravel/framework före 12.68.0, samt 13.0.0 till och med versionerna före 13.29.0.

  • Påverkade applikationer: de som använder TokenGuard, alltså en guard med drivrutinen token, tillsammans med MySQL eller MariaDB i en drabbad konfiguration.

  • Inte omfattat: fixen rör bara TokenGuard. Den vanliga sessionsinloggningen ändras inte, och Sanctum och Passport, som har egna guards, nämns inte i säkerhetsmeddelandet.

  • Äldre versioner: meddelandet anger bara fixade versioner för Laravel 12 och 13. För Laravel 11 och äldre finns ingen patchad version, så där är en uppgradering den enda vägen.

Säkerhetsmeddelandet anger ingen tillfällig workaround, så uppdatering är den rekommenderade åtgärden.

Vad ska du göra?

  • Kontrollera versionen med php artisan --version eller composer show laravel/framework.

  • Uppdatera Laravel med composer update laravel/framework så att ni hamnar på minst 12.68.0 eller 13.29.0. Kör era tester och driftsätt sedan som vanligt.

  • Se om ni använder TokenGuard genom att leta efter drivrutinen token i config/auth.php och efter routes med motsvarande auth-middleware. Uppdatera ändå även om ni inte gör det.

  • Gå igenom loggarna om ni använder TokenGuard, och leta efter anrop där api_token skickas som något annat än en vanlig sträng, till exempel api_token[]=.

Så kan vi hjälpa till

Vi hjälper gärna till att se över och uppdatera era Laravel-applikationer. Med ett serviceavtal håller vi koll på och installerar säkerhetsuppdateringar som denna åt dig, både för Laravel och Magento.

Källor

Av Robert

← Alla blogginlägg

Vad vill du få att fungera?

Berätta om projektet, problemet eller idén. Vi börjar där.

Ta kontakt