FixVibe
Covered by FixVibehigh

JWT Амният: Хавфи токенҳои эминнашуда ва тасдиқи даъвои гумшуда

JSON Web Tokens (JWTs) стандарти интиқоли даъвоҳоро таъмин мекунанд, аммо амният ба тасдиқи қатъӣ такя мекунад. Тасдиқ накардани имзоҳо, вақти анҷоми мӯҳлат ё аудиторияи пешбинишуда ба ҳамлагарон имкон медиҳад, ки аутентификатсияро гузаранд ё токенҳоро такрор кунанд.

CWE-347CWE-287CWE-613

Таъсири ҳамлакунанда

Тасдиқи нодурусти JWT ба ҳамлагарон имкон медиҳад, ки бо роҳи қалбакӣ даъвоҳо ё дубора истифода бурдани нишонаҳои мӯҳлаташон гузашта [S1] аз механизмҳои аутентификатсия гузаранд. Агар сервер токенҳоро бе имзои дуруст қабул кунад, ҳамлакунанда метавонад бори боркуниро тағир диҳад, то имтиёзҳоро афзоиш диҳад ё ба ягон корбар [S1] тақлид кунад. Ғайр аз он, иҷро накардани даъвои мӯҳлат (exp) ба ҳамлакунанда имкон медиҳад, ки токени вайроншударо ба таври номуайян истифода кунад [S1].

Сабаби аслӣ

Web Token JSON (JWT) як сохтори ба JSON асосёфта мебошад, ки барои муаррифии даъвоҳое, ки ба таври рақамӣ имзо шудаанд ё тамомияти [S1] ҳифз шудаанд, истифода мешавад. Нокомиҳои амниятӣ маъмулан аз ду холигии ибтидоии татбиқ бармеоянд:

  • Қабули JWT-ҳои эминнашуда: Агар хадамот тафтиши имзоро ба таври қатъӣ иҷро накунад, он метавонад "JWT-ҳои бехатар" -ро коркард кунад, ки имзо мавҷуд нест ва алгоритм ба "ҳеҷ" [S1] муқаррар карда шудааст. Дар ин сенария, сервер ба иддаъоҳо дар сарбории боркаш бе тафтиши якпорчагии онҳо [S1] эътимод мекунад.
  • Таъдиди даъвои гумшуда: Даъвои exp (мӯҳлати анҷом) вақтеро муайян мекунад, ки дар давоми ва ё баъд аз он JWT барои коркарди [S1] набояд қабул карда шавад. Даъвои aud (аудитория) гирандагони пешбинишудаи токени [S1]-ро муайян мекунад. Агар инҳо тафтиш карда нашаванд, сервер метавонад нишонаҳоеро, ки мӯҳлати истифодаашон гузаштааст ё барои замимаи дигар [S1] пешбинӣ шуда буданд, қабул кунад.

Ислоҳҳои мушаххас

  • Имзоҳои криптографиро ҷорӣ кунед: Барномаро барои рад кардани ҳама гуна JWT танзим кунед, ки алгоритми имзои қаблан тасдиқшуда ва қавӣ (ба монанди RS256) истифода накунад.
  • Таъйид кардани мӯҳлати мӯҳлат: Санҷиши ҳатмӣ анҷом диҳед, то боварӣ ҳосил кунед, ки сана ва вақти ҷорӣ пеш аз вақте, ки дар даъвои exp [S1] нишон дода шудааст.
  • Тафтиш кардани аудитория: Боварӣ ҳосил кунед, ки даъвои aud дорои арзиши муайянкунандаи хидмати маҳаллӣ мебошад; агар хидмат дар даъвои aud муайян карда нашавад, нишона бояд [S1] рад карда шавад.
  • Пешгирии Бозӣ: Истифода аз даъвои jti (JWT ID) барои таъини идентификатори беназир ба ҳар як нишона, имкон медиҳад, ки сервер токенҳои аз нав истифодашуда [S1]-ро пайгирӣ ва рад кунад.

Стратегияи ошкор

Осебиятҳоро дар коркарди JWT тавассути таҳлили сохтори токен ва рафтори посухи сервер муайян кардан мумкин аст:

  • Тафтиши сарлавҳа: Санҷиши сарлавҳаи alg (алгоритм) барои боварӣ ҳосил кардан, ки он ба "ҳеҷ" таъин нашудааст ва стандартҳои криптографии пешбинишудаи [S1]-ро истифода мебарад.
  • Тасдиқи даъво: Тасдиқи мавҷудият ва эътибори даъвоҳои exp (мӯҳлат) ва aud (аудитория) дар доираи бори JSON [S1].
  • Санҷиши тасдиқ: Санҷиш, ки оё сервер нишонаҳоеро, ки мувофиқи даъвои exp гузаштааст ё барои аудиторияи дигар, тавре ки даъвои aud ZXCVFIXVIBETOKEN2ZXV муайян кардааст, дуруст рад мекунад.