FixVibe
Covered by FixVibehigh

JWT Turvalisus: tagamata žetoonide riskid ja nõude kinnitamise puudumine

JSON-i veebimärgid (JWT-d) pakuvad nõuete ülekandmise standardit, kuid turvalisus sõltub rangest valideerimisest. Allkirjade, aegumisaegade või sihtrühma kontrollimata jätmine võimaldab ründajatel autentimisest mööda minna või žetoone uuesti esitada.

CWE-347CWE-287CWE-613

Ründaja mõju

Ebaõige JWT valideerimine võimaldab ründajatel autentimismehhanismidest mööda minna, võltsides nõudeid või kasutades aegunud žetoone [S1]. Kui server aktsepteerib ilma kehtiva allkirjata žetoone, saab ründaja muuta kasulikku koormust, et suurendada privileege või esineda mis tahes kasutajana [S1]. Lisaks võimaldab aegumisnõude (exp) jõustamata jätmine ründajal kasutada rikutud märki määramata aja jooksul [S1].

Algpõhjus

JSON-i veebimärk (JWT) on JSON-põhine struktuur, mida kasutatakse digitaalselt allkirjastatud või terviklikkuse kaitstud nõuete esitamiseks [S1]. Turvatõrked tulenevad tavaliselt kahest peamisest rakendamise lüngast:

  • Turvamata JWT-de aktsepteerimine: kui teenus ei jõusta rangelt allkirjade kontrollimist, võib see töödelda "Turvamata JWT-sid", kui allkiri puudub ja algoritmiks on määratud "puudub". [S1]. Selle stsenaariumi korral usaldab server kasulikus koormuses olevaid väiteid, kontrollimata nende terviklikkust [S1].
  • Puuduv nõude kinnitamine: nõue exp (aegumisaeg) määrab aja, mille möödumisel ei tohi dokumenti JWT dokumendi [S1] töötlemiseks vastu võtta. Nõue aud (publik) tuvastab märgi [S1] kavandatud saajad. Kui neid ei märgita, võib server aktsepteerida žetoone, mis on aegunud või olid mõeldud mõnele muule rakendusele [S1].

Betooniparandused

  • Krüptograafiliste allkirjade jõustamine: konfigureerige rakendus nii, et see lükkab tagasi kõik JWT, mis ei kasuta eelnevalt kinnitatud tugevat allkirjastamisalgoritmi (nt RS256).
  • Kinnitage aegumiskuupäev: rakendage kohustuslik kontroll tagamaks, et praegune kuupäev ja kellaaeg on enne exp nõudes [S1] määratud aega.
  • Kinnitage sihtrühm: veenduge, et nõue aud sisaldab väärtust, mis identifitseerib kohalikku teenust; kui teenust aud nõudes ei tuvastata, tuleb luba [S1] tagasi lükata.
  • Taasesituse vältimine: kasutage nõuet jti (JWT ID), et määrata igale märgile kordumatu identifikaator, mis võimaldab serveril taaskasutatud märke jälgida ja tagasi lükata.

Tuvastamisstrateegia

Haavatavused JWT haldamises saab tuvastada märgi struktuuri ja serveri reageerimiskäitumise analüüsimisel.

  • Päise kontroll: alg (algoritmi) päise kontrollimine, et veenduda, et see pole seatud väärtusele "puudub" ja kasutaks eeldatavaid krüptostandardeid [S1].
  • Nõuete kinnitamine: nõuete exp (aegunud) ja aud (vaatajaskond) olemasolu ja kehtivuse kinnitamine JSON-i kasuliku koormuse [S1] piires.
  • Kinnitustestimine: testimine, kas server lükkab õigesti tagasi märgid, mis on vastavalt exp nõudele aegunud või on mõeldud erinevale sihtrühmale, nagu on määratletud nõude aud nõudega [S1].