Laravel TokenGuard Auth-Bypass: GHSA-f9x3-7vq9-cph6
Ein kritisches Laravel-Advisory mit öffentlichem Proof of Concept, aber nur manche Apps sind betroffen. Drei Prüfungen zeigen, ob Ihre dazugehört.
Ihre App ist betroffen, wenn sie laravel/framework unter 12.68.0 bzw. 13.29.0 nutzt, einen
Guard mit dem einfachen token-Treiber hat und die Nutzer in MySQL oder MariaDB
speichert. Ein Angreifer kann sich dann ohne das API-Token als bestehender Nutzer anmelden.
Führen Sie composer update laravel/framework aus. Die Fixes liegen seit
25. August 2026 auf Packagist. Wer seitdem aktualisiert hat, ist bereits geschützt.
Was schiefging
Der TokenGuard von Laravel schützt Routen hinter dem token-Treiber,
meist auth:api. Vor dem Fix prüfte er nur, dass das übergebene Token nicht leer
war, bevor er es an die Nutzerabfrage weitergab. Laut Advisory wird unter MySQL und MariaDB ein
präparierter Wert, der kein String ist, dann falsch behandelt, und die Abfrage trifft einen
unbeabsichtigten Nutzer, statt fehlzuschlagen. Der Fix weist Arrays und andere Nicht-Strings
vor jeder Abfrage ab.
Laravel veröffentlichte das Advisory am 19. Oktober 2026 mit CVSS 9.2 und ohne CVE-Nummer. Hakai Security veröffentlichte einen Tag später eine Analyse und einen funktionierenden Proof of Concept.
Drei Prüfungen
# 1. Welche Framework-Version ist installiert?
composer show laravel/framework | grep versions
# 2. Nutzt ein Guard den einfachen token-Treiber?
grep -n "'driver' => 'token'" config/auth.php
# 3. Liegt die users-Tabelle in MySQL oder MariaDB?
grep -E '^DB_CONNECTION=' .env
Betroffen sind Sie nur, wenn alle drei zutreffen: eine betroffene Version, ein Guard mit dem
token-Treiber und MySQL oder MariaDB. Das Advisory betrifft nur diesen Treiber.
Sanctum und Passport registrieren eigene Treiber und werden nicht genannt. Viele Apps haben den
alten api-Guard noch in config/auth.php, ohne ihn auf einer Route zu
nutzen. Existiert der Guard, patchen Sie lieber, als Zeit mit dem Beweis zu verbringen, dass er
ungenutzt ist.
Korrigierte Versionen
| Zweig | Betroffen | Behoben in | Hinweise |
|---|---|---|---|
| 13.x | Unter 13.29.0 | 13.29.0 | Hakai fand den Fix bereits in 13.27.0 |
| 12.x | Unter 12.68.0 | 12.68.0 | Im Advisory genannt |
| 11.x | Alle | 11.56.1 | Backport laut Hakai; im Advisory nicht genannt |
| 10.x und älter | Alle | Keiner | Upgraden oder vom Token-Treiber wechseln |
Aktualisieren
composer update laravel/framework --with-dependencies
composer show laravel/framework | grep versions
php artisan config:clear && php artisan route:clear
# Queue-Worker und Octane neu starten, sie halten den alten Code geladen
php artisan queue:restart
php artisan octane:reload # nur wenn Sie Octane nutzen Lang laufende Prozesse behalten den alten Framework-Code, bis sie neu starten. Starten Sie deshalb nach dem Deployment Queue-Worker, Horizon, Octane und alles unter Supervisor neu.
Wenn der Token-Guard exponiert war
Gehen Sie davon aus, dass auf die API zugegriffen worden sein kann. Suchen Sie in den
Webserver-Logs nach Requests auf Routen hinter dem Token-Guard, bei denen das Token in
ungewöhnlicher Form ankam, etwa als Array in einem JSON-Body oder als wiederholte
api_token[]-Parameter, gefolgt von erfolgreichen Antworten. Tauschen Sie danach die
gespeicherten API-Tokens aus, denn alles, was ein Angreifer als Nutzer getan hat, geschah mit
dessen Rechten.
Derselbe Forscher meldete ein zweites Advisory mittlerer Schwere, am selben Tag veröffentlicht, GHSA-5wcm-3v2w-8362: Ein Request an eine JSON:API-Ressource mit reinem Lesezugriff konnte eine verknüpfte Tabelle leeren. Dasselbe Update behebt es.
Stolperfallen
- Die Versionsliste im Advisory ist unvollständig. Sie nennt nur 12.x und 13.x, aber Packagist zeigt 11.56.1, zeitgleich veröffentlicht, und Hakai identifizierte es als Backport. Unter 11.x aktualisieren Sie auf 11.56.1 oder neuer.
- Laravel 10 und älter haben keinen Fix. Aktualisieren Sie das Framework oder ersetzen Sie den Token-Guard durch Sanctum, das von diesem Advisory nicht betroffen ist.
- Festgeschriebene composer.lock. Ein Deployment mit
composer installinstalliert genau das, was in der Lock-Datei steht. Committen Sie die aktualisiertecomposer.lock, sonst bleibt der Server auf der alten Version.
So wurde es geprüft. Am 21. Oktober 2026 haben wir das Laravel-Advisory auf GitHub gelesen und die Veröffentlichungsdaten von 11.56.1, 12.68.0, 13.27.0 und 13.29.0 über die Packagist-API bestätigt. Die Angaben zu 11.x und 13.27.0 stammen aus der Analyse von Hakai Security, nicht von Laravel. Nicht getestet: der Bypass selbst.
Quellen
- GHSA-f9x3-7vq9-cph6: Token-based API guard auth bypass, laravel/framework, 19. Oktober 2026
- GHSA-5wcm-3v2w-8362, laravel/framework
- GHSA-f9x3-7vq9-cph6: Authentication Bypass in Laravel TokenGuard, Hakai Security, Yokai Research
- Critical Token Guard Auth Bypass Fixed in Laravel 13.29 and 12.68, Laravel News
- laravel/framework, Packagist
Häufige Fragen
Was ist der Laravel TokenGuard Authentication Bypass?
GHSA-f9x3-7vq9-cph6 ist eine kritische Lücke im eingebauten TokenGuard von Laravel, der Klasse hinter dem token-Treiber. Unter MySQL oder MariaDB wird ein präparierter Wert, der kein String ist, bei der Abfrage falsch behandelt, sodass die Abfrage einen bestehenden Nutzer trifft, statt fehlzuschlagen. Ein nicht angemeldeter Angreifer kann dann auf allen Routen hinter dem Guard als dieser Nutzer handeln. Sie hat CVSS 9.2 und hatte bei Veröffentlichung am 19. Oktober 2026 keine CVE-Nummer.
Welche Laravel-Versionen beheben GHSA-f9x3-7vq9-cph6?
Das Advisory nennt laravel/framework 12.68.0 und 13.29.0 als korrigiert. Hakai Security fand den Fix in 13.27.0 und einen Backport in 11.56.1, den das Advisory nicht erwähnt. Alle erschienen am 25. August 2026, eine seitdem aktualisierte App ist also bereits geschützt. Laravel 10 und älter haben keinen Fix.
Betrifft der Laravel Token-Guard-Bypass Sanctum oder Passport?
Das Advisory betrifft nur den token-Treiber. Sanctum und Passport registrieren eigene Guard-Treiber und werden nicht genannt. Prüfen Sie config/auth.php auf einen Guard mit driver auf token.
Ist meine Laravel-App mit PostgreSQL betroffen?
Das Advisory nennt MySQL und MariaDB als die Datenbankkonfigurationen, unter denen der Bypass funktioniert. Aktualisieren Sie trotzdem, denn der Fix weist Tokens, die keine Strings sind, vor jeder Abfrage ab, und vielleicht wechseln Sie die Datenbank später.
Die kostenlose Prüfung kontrolliert Framework-Versionen, Queue-Worker und wie Updates in Produktion gelangen. Die Prüfung läuft auf Englisch. Preise (EN).