FixVibe
Covered by FixVibehigh

JWT Sigurnost: Rizici neobezbeđenih tokena i propusta validacije potraživanja

JSON Web tokeni (JWT) pružaju standard za prijenos potraživanja, ali sigurnost se oslanja na rigoroznu validaciju. Neprovjera potpisa, vremena isteka ili ciljane publike omogućava napadačima da zaobiđu autentifikaciju ili reproduciraju tokene.

CWE-347CWE-287CWE-613

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 exp zahtjevu [S1].
  • Provjeri publiku: Osigurajte da zahtjev aud sadrži vrijednost koja identificira lokalnu uslugu; ako usluga nije identificirana u zahtjevu aud, 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) i aud (publika) unutar JSON korisnog opterećenja [S1].
  • Testiranje validacije: Testiranje da li server ispravno odbija tokene koji su istekli u skladu sa zahtjevom exp ili su namijenjeni drugoj publici kako je definirano aud zahtjevom [S1].