FixVibe
Covered by FixVibehigh

JWT Sikkerhed: Risici for usikrede tokens og manglende kravvalidering

JSON Web Tokens (JWT'er) giver en standard for overførsel af krav, men sikkerhed er afhængig af streng validering. Manglende bekræftelse af signaturer, udløbstider eller påtænkte målgrupper giver angribere mulighed for at omgå godkendelse eller genafspille tokens.

CWE-347CWE-287CWE-613

Angriberpåvirkning

Ukorrekt JWT-validering giver angribere mulighed for at omgå godkendelsesmekanismer ved at forfalske krav eller genbruge udløbne tokens [S1]. Hvis en server accepterer tokens uden en gyldig signatur, kan en angriber ændre nyttelasten for at eskalere privilegier eller efterligne enhver bruger [S1]. Hvis kravet om udløb (exp) ikke håndhæves, tillader en angriber desuden at bruge et kompromitteret token på ubestemt tid [S1].

Grundårsag

Et JSON Web Token (JWT) er en JSON-baseret struktur, der bruges til at repræsentere krav, der er digitalt signeret eller integritetsbeskyttet [S1]. Sikkerhedsfejl stammer typisk fra to primære implementeringshuller:

  • Accept af usikrede JWT'er: Hvis en tjeneste ikke strengt håndhæver signaturverifikation, kan den behandle "Usikrede JWT'er", hvor signaturen er fraværende, og algoritmen er indstillet til "ingen" [S1]. I dette scenarie har serveren tillid til kravene i nyttelasten uden at verificere deres integritet [S1].
  • Manglende kravvalidering: exp-kravet (udløbstid) identificerer det tidspunkt, hvor JWT ikke må accepteres til behandling af [S1]. aud (publikum)-kravet identificerer de tilsigtede modtagere af tokenet [S1]. Hvis disse ikke er markeret, kan serveren acceptere tokens, der er udløbet eller var beregnet til en anden applikation [S1].

Konkrete rettelser

  • Tving kryptografiske signaturer: Konfigurer applikationen til at afvise enhver JWT, der ikke bruger en forudgodkendt, stærk signeringsalgoritme (såsom RS256).
  • Valider udløb: Implementer en obligatorisk kontrol for at sikre, at den aktuelle dato og klokkeslæt er før det tidspunkt, der er angivet i exp-kravet [S1].
  • Bekræft målgruppe: Sørg for, at aud-kravet indeholder en værdi, der identificerer den lokale tjeneste; hvis tjenesten ikke er identificeret i aud-kravet, skal tokenet afvises [S1].
  • Forhindr genafspilning: Brug jti (JWT ID)-kravet til at tildele en unik identifikator til hvert token, så serveren kan spore og afvise genbrugte tokens [S1].

Detektionsstrategi

Sårbarheder i JWT-håndtering kan identificeres ved at analysere tokenstrukturen og serverresponsadfærd:

  • Header Inspection: Kontrollerer alg (algoritme) overskriften for at sikre, at den ikke er sat til "ingen" og bruger forventede kryptografiske standarder [S1].
  • Kravbekræftelse: Bekræftelse af tilstedeværelsen og gyldigheden af kravene til exp (udløb) og aud (publikum) inden for JSON-nyttelasten [S1].
  • Valideringstest: Test af, om serveren korrekt afviser tokens, der er udløbet i henhold til exp-kravet eller er beregnet til en anden målgruppe som defineret af aud-kravet [S1].