Uticaj napadača
Neispravna JWT validacija omogućava napadačima da zaobiđu mehanizme provjere autentičnosti krivotvorenjem potraživanja ili ponovnom upotrebom isteklih tokena [S1]. Ako server prihvati tokene bez valjanog potpisa, napadač može modificirati korisni teret kako bi povećao privilegije ili lažno predstavljao bilo kojeg korisnika [S1]. Nadalje, neuspjeh da se provede zahtjev za istekom (exp) omogućava napadaču da koristi kompromitovani token neograničeno [S1].
Osnovni uzrok
JSON Web Token (JWT) je struktura zasnovana na JSON-u koja se koristi za predstavljanje zahtjeva koji su digitalno potpisani ili zaštićeni integritetom [S1]. Sigurnosni kvarovi obično proizlaze iz dva osnovna propusta u implementaciji:
- Prihvatanje nezaštićenih JWT-ova: Ako usluga ne provodi striktno verifikaciju potpisa, može obraditi "neosigurane JWT-ove" gdje potpis nema, a algoritam je postavljen na "ništa" [S1]. U ovom scenariju, poslužitelj vjeruje zahtjevima u korisnom učitavanju bez provjere njihovog integriteta [S1].
- Nedostaje validacija zahtjeva:
exp(vrijeme isteka) zahtjev identifikuje vrijeme nakon ili nakon kojeg JWT ne smije biti prihvaćen za obradu [S1].aud(publika) tvrdnja identificira namjeravane primaoce tokena [S1]. Ako oni nisu označeni, server može prihvatiti tokene koji su istekli ili su bili namijenjeni drugoj aplikaciji [S1].
Betonski popravci
- Primjena kriptografskih potpisa: Konfigurirajte aplikaciju da odbije bilo koji JWT koji ne koristi unaprijed odobreni, jak algoritam za potpisivanje (kao što je RS256).
- Istek valjanosti: Provedite obaveznu provjeru kako biste osigurali da su trenutni datum i vrijeme prije vremena navedenog u
expzahtjevu [S1]. - Provjeri publiku: Osigurajte da zahtjev
audsadrži vrijednost koja identificira lokalnu uslugu; ako usluga nije identificirana u zahtjevuaud, token se mora odbiti [S1]. - Spreči ponavljanje: Koristite tvrdnju
jti(JWT ID) da dodelite jedinstveni identifikator svakom tokenu, omogućavajući serveru da prati i odbije ponovo upotrebljene tokene [S1].
Strategija detekcije
Ranjivosti u rukovanju JWT mogu se identifikovati analizom strukture tokena i ponašanja odgovora servera:
- Inspekcija zaglavlja: Provjera zaglavlja
alg(algoritam) kako bi se osiguralo da nije postavljeno na "none" i da koristi očekivane kriptografske standarde [S1]. - Provera potraživanja: Potvrđivanje prisustva i valjanosti zahteva
exp(istek) iaud(publika) unutar JSON korisnog opterećenja [S1]. - Testiranje validacije: Testiranje da li server ispravno odbija tokene koji su istekli u skladu sa zahtjevom
expili su namijenjeni drugoj publici kako je definiranoaudzahtjevom [S1].
