FixVibe
Covered by FixVibehigh

JWT Sicherheit: Risiken ungesicherter Token und fehlender Anspruchsvalidierung

JSON-Web-Tokens (JWTs) bieten einen Standard für die Übertragung von Ansprüchen, die Sicherheit hängt jedoch von einer strengen Validierung ab. Wenn Signaturen, Ablaufzeiten oder vorgesehene Zielgruppen nicht überprüft werden, können Angreifer Authentifizierungs- oder Replay-Tokens umgehen.

CWE-347CWE-287CWE-613

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 Anspruch aud (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 im aud-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) und aud (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 im aud-Anspruch [S1] definiert.