Angreifereinfluss
Eine unsachgemäße JWT-Validierung ermöglicht es Angreifern, Authentifizierungsmechanismen zu umgehen, indem sie Ansprüche fälschen oder abgelaufene Token [S1] wiederverwenden. Wenn ein Server Token ohne gültige Signatur akzeptiert, kann ein Angreifer die Nutzlast ändern, um die Berechtigungen zu erweitern oder sich als Benutzer [S1] auszugeben. Darüber hinaus kann ein Angreifer ein kompromittiertes Token auf unbestimmte Zeit verwenden, wenn der Ablaufanspruch (exp) nicht durchgesetzt wird.
Grundursache
Ein JSON-Web-Token (JWT) ist eine JSON-basierte Struktur, die zur Darstellung von Ansprüchen verwendet wird, die digital signiert oder integritätsgeschützt sind ([S1]). Sicherheitsmängel sind typischerweise auf zwei primäre Implementierungslücken zurückzuführen:
- Akzeptanz ungesicherter JWTs: Wenn ein Dienst die Signaturüberprüfung nicht strikt erzwingt, kann er „Ungesicherte JWTs“ verarbeiten, bei denen die Signatur fehlt und der Algorithmus auf „keine“ gesetzt ist [S1]. In diesem Szenario vertraut der Server den Ansprüchen in der Nutzlast, ohne deren Integrität zu überprüfen [S1].
- Fehlende Anspruchsvalidierung: Der Anspruch
exp(Ablaufzeit) gibt die Zeit an oder nach der der JWT nicht für die Verarbeitung von [S1] akzeptiert werden darf. Der Anspruchaud(Zielgruppe) identifiziert die beabsichtigten Empfänger des Tokens [S1]. Wenn diese nicht überprüft werden, akzeptiert der Server möglicherweise Token, die abgelaufen sind oder für eine andere Anwendung bestimmt waren [S1].
Konkrete Korrekturen
- Kryptografische Signaturen erzwingen: Konfigurieren Sie die Anwendung so, dass alle JWT abgelehnt werden, die keinen vorab genehmigten, starken Signaturalgorithmus (z. B. RS256) verwenden.
- Ablauf validieren: Implementieren Sie eine obligatorische Prüfung, um sicherzustellen, dass das aktuelle Datum und die aktuelle Uhrzeit vor der im
exp-Anspruch [S1] angegebenen Zeit liegen. - Zielgruppe überprüfen: Stellen Sie sicher, dass der
aud-Anspruch einen Wert enthält, der den lokalen Dienst identifiziert; Wenn der Dienst imaud-Anspruch nicht identifiziert wird, muss das Token abgelehnt werden [S1]. - Wiedergabe verhindern: Verwenden Sie den Anspruch
jti(JWT-ID), um jedem Token eine eindeutige Kennung zuzuweisen, sodass der Server wiederverwendete Token [S1] verfolgen und ablehnen kann.
Erkennungsstrategie
Schwachstellen bei der Verarbeitung von JWT können durch die Analyse der Token-Struktur und des Server-Antwortverhaltens identifiziert werden:
- Header-Inspektion: Überprüfung des
alg-Headers (Algorithmus), um sicherzustellen, dass er nicht auf „none“ gesetzt ist und die erwarteten kryptografischen Standards [S1] verwendet. - Anspruchsüberprüfung: Bestätigung des Vorhandenseins und der Gültigkeit der Ansprüche
exp(Ablauf) undaud(Zielgruppe) innerhalb der JSON-Nutzlast [S1]. - Validierungstests: Testen, ob der Server Token korrekt ablehnt, die gemäß dem
exp-Anspruch abgelaufen sind oder für eine andere Zielgruppe bestimmt sind, wie imaud-Anspruch [S1] definiert.
