FixVibe
Covered by FixVibehigh

JWT Sekuriteit: Risiko's van onversekerde tokens en ontbrekende eisbekragtiging

JSON Web Tokens (JWT's) bied 'n standaard vir die oordrag van eise, maar sekuriteit maak staat op streng validering. Versuim om handtekeninge, vervaltye of beoogde gehore te verifieer, laat aanvallers toe om stawing te omseil of tekens te herspeel.

CWE-347CWE-287CWE-613

Aanvaller impak

Onbehoorlike JWT-bekragtiging stel aanvallers in staat om stawingmeganismes te omseil deur eise te vervals of vervalde tokens te hergebruik [S1]. As 'n bediener tekens sonder 'n geldige handtekening aanvaar, kan 'n aanvaller die loonvrag verander om voorregte te eskaleer of enige gebruiker [S1] na te doen. Verder, versuim om die verstryking (exp) eis af te dwing, laat 'n aanvaller toe om 'n gekompromitteerde teken onbepaald [S1] te gebruik.

Oorsaak

'n JSON Web Token (JWT) is 'n JSON-gebaseerde struktuur wat gebruik word om eise te verteenwoordig wat digitaal onderteken of integriteit beskerm is [S1]. Sekuriteitsfoute spruit tipies uit twee primêre implementeringsgapings:

  • Aanvaarding van Onbeveiligde JWT'e: Indien 'n diens nie handtekeningverifikasie streng afdwing nie, kan dit "Onbeveiligde JWT'e" verwerk waar die handtekening afwesig is en die algoritme op "geen" gestel is [S1]. In hierdie scenario vertrou die bediener die eise in die loonvrag sonder om hul integriteit te verifieer [S1].
  • Bekragtiging van ontbrekende eis: Die exp (vervaltyd)-eis identifiseer die tyd waarop of na die JWT nie aanvaar moet word vir die verwerking van [S1] nie. Die aud (gehoor)-eis identifiseer die beoogde ontvangers van die token [S1]. As dit nie gemerk is nie, kan die bediener tokens aanvaar wat verval het of bedoel was vir 'n ander toepassing [S1].

Betonoplossings

  • Dwing kriptografiese handtekeninge af: Stel die toepassing op om enige JWT te verwerp wat nie 'n vooraf-goedgekeurde, sterk ondertekeningsalgoritme (soos RS256) gebruik nie.
  • Bekragtig verval: Implementeer 'n verpligte kontrole om te verseker dat die huidige datum en tyd voor die tyd is wat in die exp-eis [S1] gespesifiseer is.
  • Verifieer gehoor: Maak seker dat die aud-eis 'n waarde bevat wat die plaaslike diens identifiseer; indien die diens nie in die aud-eis geïdentifiseer word nie, moet die teken [S1] verwerp word.
  • Voorkom herhaling: Gebruik die jti (JWT ID)-eis om 'n unieke identifiseerder aan elke teken toe te ken, wat die bediener toelaat om hergebruikte tekens [S1] op te spoor en te verwerp.

Opsporingstrategie

Kwesbaarhede in JWT-hantering kan geïdentifiseer word deur die tekenstruktuur en bedienerresponsgedrag te ontleed:

  • Opskrifinspeksie: Kontroleer die alg (algoritme) opskrif om te verseker dat dit nie op "geen" gestel is nie en gebruik verwagte kriptografiese standaarde [S1].
  • Eisverifikasie: Bevestiging van die teenwoordigheid en geldigheid van die exp (verval) en aud (gehoor)-eise binne die JSON-loonvrag [S1].
  • Validasietoetsing: Toets of die bediener tokens wat verval het volgens die exp-eis korrek verwerp of bedoel is vir 'n ander gehoor soos gedefinieer deur die aud-eis [S1].