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 iaud-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) ochaud(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 avaud-anspråket [S1].
