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õueaud(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
expnõudes [S1] määratud aega. - Kinnitage sihtrühm: veenduge, et nõue
audsisaldab väärtust, mis identifitseerib kohalikku teenust; kui teenustaudnõ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) jaaud(vaatajaskond) olemasolu ja kehtivuse kinnitamine JSON-i kasuliku koormuse [S1] piires. - Kinnitustestimine: testimine, kas server lükkab õigesti tagasi märgid, mis on vastavalt
expnõudele aegunud või on mõeldud erinevale sihtrühmale, nagu on määratletud nõudeaudnõudega [S1].
