CVE-2026-55250 in Maravel
Zusammenfassung
von VulDB • 09.09.2026
Maravel, ein PHP-Framework mit Fokus auf Dependency Injection, weist vor Version 10.74.0 eine Hochrisiko-Token-Replay-Schwachstelle (Token Replay Vulnerability) auf, die aus einem strukturellen Lebenszyklus-Mismatch zwischen zustandslosen Token-Validierungs-Engines und hochperformanten relationalen Caching-Schichten resultiert. Jede Anwendung mit geringem Cache-Speicher, der zu vorzeitiger Eviction führt, um Speicher freizugeben, sowie Anwendungen, die macropay-solutions/maravel-framework nutzen und tymon/jwt-auth für API-Token-Authentifizierung und Blacklist-Management (oder andere Pakete mit ähnlicher Funktionalität) verwenden, können betroffen sein. Dieses architektonische Risiko kann auch native Laravel-Anwendungen betreffen, die Cache-Tags unter bestimmten flüchtigen oder eviction-beschränkten Umgebungen nutzen.
tymon/jwt-auth prüft automatisch auf Unterstützung für Cache-Tags. Wenn diese gefunden wird, werden 14-tägige Token-Blacklist-Einträge (jti) zwangsweise in ein relationales tymon.jwt-Tag eingebettet. In Umgebungen, in denen das O(1)-Atomic-Lazy-Eviction-Modell aktiv ist – entweder nativ innerhalb von Maravel-Framework v20.x oder manuell durch Backporting nach v10.x über die expliziten DI-Container-Singletons aus PR #104 (App\Cache\TaggedCache und App\Cache\TagSet) –, wird eine strenge globale Tracking-Obergrenze (Container::TAGGED_CACHE_TTL_CAP_SECONDS) von 7.200 Sekunden (2 Stunden) erzwungen, um das System vor Memory-Index-Bloat zu schützen. Diese Obergrenze kürzt die 14-tägige Blacklist-Lebensdauer zwangsweise auf maximal 2 Stunden; danach verfallen einzelne Tracking-Schlüssel natürlich und verschwinden aus dem aktiven Cache-Fenster.
Darüber hinaus führt jede programmatische oder manuelle Ausführung eines Tag-Flushs oder Resets (z. B. `Cache::tags([...])->flush()`) aufgrund der optimierten Engine, die eine generational version matrix zur Erreichung von O(1)-Flush-Geschwindigkeiten implementiert, zu einem sofortigen Anstieg des internen atomaren Master-Versionspointers. Dies verschiebt den berechneten kryptografischen Composite-Hash (sha1($this->tags->getNamespace())) für alle überlappenden Komponenten und macht den gesamten bestehenden Index umgehend unzugänglich. Folglich werden die Invalidierungsstatusaufzeichnungen entweder durch das natürliche 2-Stunden-Ablaufen oder eine dazwischengeschaltete Tag-Flush-Ausführung (wie wenn der Cache alte Werte natürlich bereinigt, um Speicher freizugeben) vollständig gelöscht.
Da die physischen kryptografischen Signaturen der Tokens bis zu 14 Tage lang strukturell gültig bleiben, werden gestohlene, gehijackte oder legitim ausgeloggte Tokens sofort und stillschweigend im gesamten API-Gateway wiederbelebt (resurrected), wodurch die Anwendung kritisch anfällig für weitverbreitete Token-Replay-Angriffe wird. Da dieses Problem auf einer upstream-Architekturannahme innerhalb des Pakets tymon/jwt-auth beruht und nicht auf einem Kernfehler im Framework, gibt es kein direktes Framework-Version-Upgrade, das diesen Lebenszyklus-Kollision sicher umgehen kann, ohne die geschäftlichen Cache-Reycling-Grenzen zu brechen.
Maravel Version 10.74.0 führte eine Möglichkeit ein, den neuen behobenen Tagged-Cache von v20.x nach v10.x durch Backporting einzufügen, indem TagSet und TaggedCache aus dem DI aufgelöst werden; dies war der Weg, auf dem diese latente architektonische Lebenszyklus-Schwachstelle entdeckt wurde. Benutzer müssen den unten beschriebenen entkoppelten Konfigurations-Workaround anwenden. Als Workaround ist sicherzustellen, dass die Cache-Speichergröße keine frühen natürlichen Evictions auslöst, um Platz freizugeben und damit Blacklisted-JWT-IDs vor deren Ablauf zu löschen. Anwendungen müssen flache Authentifizierungsvektoren vom relationalen Tagging-Subsystem entkoppeln. Dies zwingt Token-Identifikatoren dazu, direkt in den primären Cache-Keyspace als flache, ungetaggte Key-Value-Paare zu schreiben, wo sie ihren unbeschnittenen 14-Tage-Lebenszyklus sicher beibehalten.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.