FixVibe
Covered by FixVibehigh

JWT Säkerhet: Risker för osäkrade tokens och saknad anspråksvalidering

JSON Web Tokens (JWT) tillhandahåller en standard för överföring av anspråk, men säkerheten är beroende av noggrann validering. Underlåtenhet att verifiera signaturer, utgångstider eller avsedda målgrupper tillåter angripare att kringgå autentisering eller spela upp tokens.

CWE-347CWE-287CWE-613

Angriparens inverkan

Felaktig JWT-validering tillåter angripare att kringgå autentiseringsmekanismer genom att förfalska anspråk eller återanvända utgångna tokens [S1]. Om en server accepterar tokens utan en giltig signatur, kan en angripare modifiera nyttolasten för att eskalera privilegier eller imitera valfri användare [S1]. Om inte anspråket på utgången (exp) genomförs, kan en angripare dessutom använda en komprometterad token [S1] på obestämd tid.

Rotorsak

En JSON Web Token (JWT) är en JSON-baserad struktur som används för att representera anspråk som är digitalt signerade eller integritetsskyddade [S1]. Säkerhetsfel härrör vanligtvis från två primära implementeringsluckor:

  • Godkännande av osäkra JWT:er: Om en tjänst inte strikt upprätthåller signaturverifiering kan den behandla "osäkrade JWTs" där signaturen saknas och algoritmen är inställd på "ingen" [S1]. I det här scenariot litar servern på anspråken i nyttolasten utan att verifiera deras integritet [S1].
  • Validering av saknad anspråk: Anspråket exp (förfallotid) identifierar tiden på eller efter vilken JWT inte får accepteras för behandling av [S1]. aud (publikens) anspråk identifierar de avsedda mottagarna av token [S1]. Om dessa inte är markerade kan servern acceptera tokens som har gått ut eller var avsedda för en annan applikation [S1].

Betongfixar

  • Tvinga upp kryptografiska signaturer: Konfigurera applikationen för att avvisa alla JWT som inte använder en förgodkänd, stark signeringsalgoritm (som RS256).
  • Validera utgångsdatum: Genomför en obligatorisk kontroll för att säkerställa att det aktuella datumet och tiden ligger före den tid som anges i exp-anspråket [S1].
  • Verifiera målgrupp: Se till att aud-anspråket innehåller ett värde som identifierar den lokala tjänsten; om tjänsten inte identifieras i aud-anspråket, måste token avvisas [S1].
  • Förhindra uppspelning: Använd anspråket jti (JWT ID) för att tilldela en unik identifierare till varje token, vilket gör att servern kan spåra och avvisa återanvända tokens [S1].

Detektionsstrategi

Sårbarheter i JWT-hantering kan identifieras genom att analysera tokenstrukturen och serverns svarsbeteende:

  • Header Inspection: Kontrollera alg (algoritm)-rubriken för att säkerställa att den inte är inställd på "ingen" och använder förväntade kryptografiska standarder [S1].
  • Anspråksverifiering: Bekräftar närvaron och giltigheten av anspråken exp (utgångsdatum) och aud (publiken) inom JSON-nyttolasten [S1].
  • Valideringstestning: Testar om servern korrekt avvisar tokens som har gått ut enligt exp-anspråket eller är avsedda för en annan publik enligt definitionen av aud-anspråket [S1].