Zum Inhalt springen

Das Magazin für Web-Handwerker Samstag, 24. Oktober 2026

Sicherheit

Laravel schließt kritische Authentifizierungslücke in TokenGuard

Eine kritische Schwachstelle mit CVSS 9.2 in TokenGuard, Laravels tokenbasiertem Authentifizierungs-Guard, erlaubte es, auf MySQL und MariaDB jeden beliebigen Account zu übernehmen. Der Patch erschien bereits Ende August in 12.68.0 und 13.29.0, veröffentlicht wurde der Hinweis aber erst am 19. Oktober.

Laravel - faille TokenGuard

Die Maintainer des Frameworks veröffentlichten am 19. Oktober den Hinweis GHSA-f9x3-7vq9-cph6, der eine kritische Schwachstelle (CVSS 9.2) in TokenGuard beschreibt, Laravels eingebautem tokenbasiertem Authentifizierungs-Guard. Auf MySQL oder MariaDB konnte ein nicht authentifizierter Angreifer jeden existierenden Benutzer imitieren, ohne dessen API-Token zu kennen. Der Patch selbst war bereits zwei Monate zuvor still und leise in den Versionen 12.68.0 und 13.29.0 ausgeliefert worden.

Ein Patch, veröffentlicht vor seiner eigenen Offenlegung

Die Versionen 12.68.0 und 13.29.0 erschienen am 25. August 2026. Die Release-Notes ließen damals nicht erkennen, wie schwerwiegend das gerade behobene Problem war. Erst am 19. Oktober, fast zwei Monate später, legte der Hinweis GHSA-f9x3-7vq9-cph6 das tatsächliche Risiko offen — ein Rhythmus, der bei Framework-Maintainern mittlerweile üblich ist: still patchen, Teams Zeit zum Aktualisieren geben, das Risiko erst danach öffentlich dokumentieren. Das letzte große Release des Frameworks, Version 13.36, hatte bereits die Zuverlässigkeit der Queue-Worker verbessert; 13.29, das TokenGuard behebt, liegt im selben Zweig einige Versionen davor.

Der Mechanismus der Schwachstelle

TokenGuard ist der einfachste Authentifizierungs-Guard, den Laravel zum Schutz einer API mitliefert: Er vergleicht das vom Client gesendete Token mit dem für den Benutzer gespeicherten. Vor dem Patch prüfte die Klasse lediglich, ob das Token nicht leer war, bevor sie es an den User Provider weiterreichte. Ein Angreifer konnte einen speziell konstruierten, nicht-textuellen Credential-Wert übermitteln, den die Datenbankabfrage auf MySQL und MariaDB unerwartet interpretierte — bis hin zur Übereinstimmung mit einem nicht beabsichtigten Benutzerdatensatz.

// config/auth.php — betroffene Konfiguration
'api' => [
    'driver'   => 'token',
    'provider' => 'users',
],

// Vor dem Patch: nur eine Prüfung auf Leere
if (empty($token)) {
    return null;
}
$user = $provider->retrieveByCredentials(['api_token' => $token]);

// Seit 12.68.0 / 13.29.0: nicht-textuelle Werte werden abgelehnt
if (empty($token) || ! is_string($token)) {
    return null;
}

Wer betroffen ist

Betroffen sind ausschließlich Anwendungen, die in config/auth.php einen Guard mit dem Treiber token deklarieren, und das nur auf MySQL oder MariaDB. Laravel Sanctum und Laravel Passport registrieren eigene Guard-Treiber und fallen nicht unter diesen Hinweis.

AngabeDetail
KennungGHSA-f9x3-7vq9-cph6 / CVE-2026-114509
SchweregradKritisch — CVSS 9.2
Betroffene Versionen< 12.68.0 und < 13.29.0
Behobene Versionen12.68.0 und 13.29.0 (veröffentlicht am 25.08.2026)
Öffentliche Offenlegung19. Oktober 2026
Nicht betroffene KomponentenSanctum, Passport

Zwei Monate liegen zwischen dem stillen Patch und seiner öffentlichen Offenlegung — eine ungewöhnlich lange Zeitspanne für eine Schwachstelle, mit der sich ein nicht authentifizierter Angreifer als jeder beliebige Benutzer ausgeben konnte.

Wie man reagiert

Die Korrektur besteht in einem Versions-Update: composer update laravel/framework auf 12.68.0, 13.29.0 oder neuer. Teams sollten anschließend config/auth.php durchsehen, um jeden mit dem Treiber token konfigurierten Guard zu identifizieren, mit Priorität auf Anwendungen, die auf MySQL oder MariaDB laufen. Ein regelmäßiger Durchlauf mit composer audit, zusammen mit den übrigen Kommandozeilen-Werkzeugen, die eine solide Entwicklungsroutine ausmachen, hätte den Hinweis bereits bei seiner Veröffentlichung sichtbar gemacht. Allgemeiner erinnert diese Schwachstelle daran, dass ein API-Token selbst eine Form von Anwendungsgeheimnis ist, das denselben Umgang verdient wie Umgebungsvariablen und Zugangsdaten eines Projekts.

Beachtenswert: Ein zweiter Hinweis, GHSA-5wcm-3v2w-8362 (Schweregrad 6.5), betrifft JSON:API-Ressourcen zwischen 12.45.0 und 12.68.0 sowie vor 13.27.0. Eine Nur-Lese-Anfrage konnte dort eine destruktive Operation auf einer verknüpften Tabelle auslösen. Ein Update auf 12.68.0 oder 13.29.0 deckt beide Hinweise in einem Schritt ab.

Was man sich merken sollte

  • TokenGuard, Laravels tokenbasierter Authentifizierungs-Guard, war vor den Versionen 12.68.0 und 13.29.0 anfällig für Account-Übernahmen auf MySQL und MariaDB.
  • Der Patch erschien am 25. August 2026, der öffentliche Hinweis aber erst am 19. Oktober.
  • Sanctum und Passport sind nicht betroffen; betroffen sind nur Guards, die explizit den Treiber token verwenden.
  • Ein einziges Update von laravel/framework behebt zugleich den verwandten JSON:API-Hinweis.

Diese Art von Lücke zwischen Patch und Offenlegung verdient genaue Beobachtung: Ein Team, das Release-Notes nur beim Update liest, übersieht das Signal vollständig. Die bessere Gewohnheit ist, die Sicherheitshinweise des Repositorys selbst zu beobachten, über composer audit oder eine dedizierte GitHub-Benachrichtigung, statt darauf zu warten, dass ein Changelog ein Risiko explizit benennt — was er aus Gründen der verantwortungsvollen Offenlegung fast nie tun wird. — Simon Janvier

Zum Weiterlesen

Vollständiger Sicherheitshinweis: GHSA-f9x3-7vq9-cph6 auf GitHub.

Teilen LinkedIn Bluesky Hacker News E-mail

Ebenfalls lesenswert