FixVibe
Covered by FixVibehigh

JWT Öryggi: Áhætta af ótryggðum táknum og týndu kröfustaðfestingu

JSON Web Tokens (JWTs) veita staðal til að flytja kröfur, en öryggi byggir á ströngu staðfestingu. Misbrestur á að staðfesta undirskriftir, gildistíma eða ætlaða áhorfendur gerir árásarmönnum kleift að komast framhjá auðkenningu eða endurspila tákn.

CWE-347CWE-287CWE-613

Áhrif árásarmannsins

Óviðeigandi JWT staðfesting gerir árásarmönnum kleift að komast framhjá auðkenningaraðferðum með því að falsa kröfur eða endurnýta útrunnið tákn [S1]. Ef þjónn samþykkir tákn án gildrar undirskriftar getur árásarmaður breytt hleðslunni til að auka réttindi eða líkja eftir notanda [S1]. Ennfremur, ef ekki tekst að framfylgja fyrningarkröfunni (exp) gerir árásarmanni kleift að nota málamiðlunarlykil endalaust [S1].

Orsök

JSON veftákn (JWT) er uppbygging sem byggir á JSON sem er notuð til að tákna kröfur sem eru stafrænt undirritaðar eða heilleikavarðar [S1]. Öryggisbilanir stafa venjulega af tveimur aðal framkvæmdabilum:

  • Samþykki ótryggðra JWT: Ef þjónusta framfylgir ekki stranglega sannprófun undirskrifta getur hún unnið úr „Ótryggðum JWTs“ þar sem undirskriftin er ekki til staðar og reikniritið er stillt á „engin“ [S1]. Í þessari atburðarás treystir þjónninn kröfunum í farminn án þess að sannreyna heilleika þeirra [S1].
  • Staðfesting vantar kröfu: exp (fyrningatími) krafan auðkennir þann tíma sem ekki má samþykkja JWT til vinnslu [S1] eða eftir það. aud (áhorfenda) krafan auðkennir fyrirhugaða viðtakendur táknsins [S1]. Ef þetta er ekki hakað getur þjónninn samþykkt tákn sem eru útrunnið eða voru ætlaðir fyrir annað forrit [S1].

Steinsteypa lagfæringar

  • Að framfylgja dulritunarundirskriftum: Stilltu forritið þannig að það hafni hvaða JWT sem notar ekki fyrirfram samþykktan, sterkan undirskriftaralgrím (eins og RS256).
  • Staðfesta gildistíma: Framkvæmdu lögboðna athugun til að tryggja að núverandi dagsetning og tími séu fyrir tímann sem tilgreindur er í exp kröfunni [S1].
  • Staðfestu áhorfendur: Gakktu úr skugga um að aud krafan innihaldi gildi sem auðkennir staðbundna þjónustu; ef þjónustan er ekki auðkennd í aud kröfunni verður að hafna tákninu [S1].
  • Koma í veg fyrir endurspilun: Notaðu jti (JWT ID) tilkallið til að úthluta einstöku auðkenni fyrir hvert tákn, sem gerir þjóninum kleift að rekja og hafna endurnotuðum táknum [S1].

Uppgötvunarstefna

Hægt er að bera kennsl á veikleika í meðhöndlun JWT með því að greina táknbyggingu og viðbragðshegðun netþjóns:

  • Höfuðskoðun: Athugaðu alg (reiknirit) hausinn til að tryggja að hann sé ekki stilltur á "enginn" og notar væntanlega dulmálsstaðla [S1].
  • Staðfesting á kröfum: Staðfesting á tilvist og gildi exp (rennur út) og aud (áhorfendur) kröfur innan JSON farms [S1].
  • Validation Testing: Prófar hvort þjónninn hafnar táknum sem eru útrunnir samkvæmt exp kröfunni eða eru ætlaðir öðrum markhópi eins og skilgreint er af aud kröfunni [S1].