Angriperpåvirkning
Feil JWT-validering lar angripere omgå autentiseringsmekanismer ved å forfalske krav eller gjenbruke utløpte tokens [S1]. Hvis en server godtar tokens uten en gyldig signatur, kan en angriper endre nyttelasten for å eskalere privilegier eller utgi seg for å være en hvilken som helst bruker [S1]. Videre, unnlatelse av å håndheve utløpskravet (exp) tillater en angriper å bruke et kompromittert token på ubestemt tid [S1].
Grunnårsak
Et JSON Web Token (JWT) er en JSON-basert struktur som brukes til å representere krav som er digitalt signert eller integritetsbeskyttet [S1]. Sikkerhetsfeil stammer vanligvis fra to primære implementeringshull:
- Godsept av usikrede JWT-er: Hvis en tjeneste ikke strengt håndhever signaturverifisering, kan den behandle "Usikrede JWT-er" der signaturen er fraværende og algoritmen er satt til "ingen" [S1]. I dette scenariet stoler serveren på kravene i nyttelasten uten å verifisere deres integritet [S1].
- Manglende kravvalidering:
exp(utløpstid)-kravet identifiserer tidspunktet på eller etter hvilket JWT ikke må aksepteres for behandling av [S1].aud(publikum)-kravet identifiserer de tiltenkte mottakerne av tokenet [S1]. Hvis disse ikke er merket av, kan serveren godta tokens som er utløpt eller som er ment for en annen applikasjon [S1].
Betongrettinger
- Håndhev kryptografiske signaturer: Konfigurer applikasjonen til å avvise alle JWT som ikke bruker en forhåndsgodkjent, sterk signeringsalgoritme (som RS256).
- Valider utløp: Implementer en obligatorisk sjekk for å sikre at gjeldende dato og klokkeslett er før tiden spesifisert i
exp-kravet [S1]. - Bekreft målgruppe: Sørg for at
aud-kravet inneholder en verdi som identifiserer den lokale tjenesten; hvis tjenesten ikke er identifisert iaud-kravet, må tokenet avvises [S1]. - Forhindre avspilling: Bruk kravet
jti(JWT ID) for å tilordne en unik identifikator til hvert token, slik at serveren kan spore og avvise gjenbrukte tokens [S1].
Deteksjonsstrategi
Sårbarheter i JWT-håndtering kan identifiseres ved å analysere tokenstrukturen og serverresponsatferden:
- Inspeksjon av topptekst: Kontrollerer
alg(algoritme) overskriften for å sikre at den ikke er satt til "ingen" og bruker forventede kryptografiske standarder [S1]. - Kravbekreftelse: Bekreftelse av tilstedeværelsen og gyldigheten av kravene til
exp(utløp) ogaud(publikum) innenfor JSON-nyttelasten [S1]. - Valideringstesting: Tester om serveren korrekt avviser tokens som har utløpt i henhold til
exp-kravet eller er ment for en annen målgruppe som definert avaud-kravet [S1].
