Athari za Mshambulizi
Uthibitishaji usiofaa wa JWT huruhusu wavamizi kukwepa mbinu za uthibitishaji kwa kughushi madai au kutumia tena tokeni zilizokwisha muda wake [S1]. Seva ikikubali tokeni bila saini halali, mshambulizi anaweza kurekebisha upakiaji ili kuongeza mapendeleo au kuiga mtumiaji yeyote [S1]. Zaidi ya hayo, kushindwa kutekeleza dai la kuisha kwa muda wa matumizi (exp) huruhusu mshambulizi kutumia tokeni iliyoathiriwa kwa muda usiojulikana [S1].
Chanzo Chanzo
Tokeni ya Wavuti ya JSON (JWT) ni muundo unaotegemea JSON unaotumiwa kuwakilisha madai ambayo yametiwa sahihi kidijitali au kulindwa kwa uadilifu [S1]. Kushindwa kwa usalama kwa kawaida kunatokana na mapungufu mawili ya msingi ya utekelezaji:
- Kukubalika kwa JWT Zisizolindwa: Ikiwa huduma haitekelezi uthibitishaji wa sahihi kabisa, inaweza kuchakata "JWT zisizolindwa" ambapo saini haipo na algoriti imewekwa kuwa "hapana" [S1]. Katika hali hii, seva inaamini madai katika upakiaji bila kuthibitisha uadilifu wao [S1].
- Uthibitishaji wa Dai unaokosekana: Dai la
exp(muda wa kuisha) hubainisha muda ambao JWT lazima ukubaliwe kwa ajili ya kuchakata [S1] au baada yake. Dai laaud(hadhira) linabainisha walengwa wa kupokea tokeni [S1]. Ikiwa hizi hazijachaguliwa, seva inaweza kukubali tokeni ambazo muda wake umeisha au zilikusudiwa kwa programu tofauti [S1].
Marekebisho ya Zege
- Tekeleza Sahihi za Cryptographic: Sanidi programu ili kukataa JWT yoyote ambayo haitumii algoriti iliyoidhinishwa awali, ya kutia sahihi (kama vile RS256).
- Thibitisha Muda wa Kuisha: Tekeleza ukaguzi wa lazima ili kuhakikisha tarehe na saa ya sasa ni kabla ya muda uliobainishwa katika dai la
exp[S1]. - Thibitisha Hadhira: Hakikisha dai la
audlina thamani inayotambulisha huduma ya ndani; ikiwa huduma haijatambuliwa katika dai laaud, tokeni lazima ikataliwe [S1]. - Zuia Uchezaji tena: Tumia dai la
jti(JWT) ili kukabidhi kitambulisho cha kipekee kwa kila tokeni, ikiruhusu seva kufuatilia na kukataa tokeni zilizotumika tena [S1].
Mkakati wa Ugunduzi
Udhaifu katika kushughulikia JWT unaweza kutambuliwa kwa kuchanganua muundo wa tokeni na tabia ya majibu ya seva:
- Ukaguzi wa Kichwa: Kukagua kichwa cha
alg(algorithm) ili kuhakikisha kuwa hakijawekwa kuwa "hapana" na hutumia viwango vya kriptografia vinavyotarajiwa [S1]. - Uthibitishaji wa Dai: Kuthibitisha kuwepo na uhalali wa madai ya
exp(kuisha) naaud(hadhira) ndani ya malipo ya JSON [S1]. - Jaribio la Uthibitishaji: Kujaribu ikiwa seva inakataa kwa usahihi tokeni ambazo muda wake umeisha kulingana na dai la
expau zinalenga hadhira tofauti kama ilivyobainishwa na dai laaud[S1].
